我完全被这个问题难住了。我必须利用当前的代码结构使用递归将用户输入的十六进制值转换为十进制值。递归调用的方法头无法更改。我在没有使用递归的情况下就解决了这个问题,但我一生都无法思考如何做到这一点。
//编辑——已解决
public class hextodecimal {
public static void main(String[] args) {
// Test out the parsing with values from page 719
System.out.println(hexToDecimal("7F"));
System.out.println(hexToDecimal("FFFF"));
System.out.println(hexToDecimal("431"));
}
public static int hexToDecimal(String hexString) {
return hexToDecimal(hexString, 0, hexString.length() - 1);
}
public static int hexToDecimal(String hexString, int end, int hexLength) {
if (hexLength < end)
return 0;
else {
int decValue;
if (hexString.charAt(hexLength) == 'A')
decValue = 10;
else if (hexString.charAt(hexLength) == 'B')
decValue = 11;
else if (hexString.charAt(hexLength) == 'C')
decValue = 12;
else if (hexString.charAt(hexLength) == 'D')
decValue = 13;
else if (hexString.charAt(hexLength) == 'E')
decValue = 14;
else if (hexString.charAt(hexLength) == 'F')
decValue = 15;
else
decValue = hexString.charAt(hexLength) - '0';
return hexToDecimal(hexString, end, hexLength - 1) * 16
+ decValue;
}
}
}
最佳答案
只有两个选择。处理最左边的字符,并将 substring(1) 递归地传递给自己,或者处理最右边的字符,并将左边的内容递归地传递给自己。这应该已经足够暗示了。
关于java - 使用递归将十六进制值转换为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381372/