Java 使用递归时,在方法中调用方法会得到不同的结果
我有两种方法,Java 使用递归时,在方法中调用方法会得到不同的结果,java,recursion,Java,Recursion,我有两种方法,binToDec将用户输入的二进制转换为十进制,以及decToHex将十进制转换为十六进制 public static int binToDec(int num){ int result = 0; int exp = 0; while(num != 0){ int x = num %10; result += x *Math.pow(2,exp); exp++; num = num / 10; } return resu
binToDec
将用户输入的二进制转换为十进制,以及decToHex
将十进制转换为十六进制
public static int binToDec(int num){
int result = 0;
int exp = 0;
while(num != 0){
int x = num %10;
result += x *Math.pow(2,exp);
exp++;
num = num / 10;
}
return result;
}
public static String decToHex(int num){
String result = "";
int n = num;
int remainder = n % 16;
if (n == 0) {
return "";
} else {
switch (remainder) {
case 10:
result = "A";
break;
case 11:
result = "B";
break;
case 12:
result = "C";
break;
case 13:
result = "D";
break;
case 14:
result = "E";
break;
case 15:
result = "F";
break;
default:
result = remainder + result;
break;
}
String finalResult = decToHex(n/ 16 ) + result;
return finalResult;
}
}
问题是,当我创建一个名为binToHex
的新方法将二进制转换为十六进制时,与在线转换器相比,结果是不同的。我只是从上面调用了这些方法。这是我的binToHex
public static String binToHex(int num) {
int binToDec = binToDec(num);
String result = decToHex(num);
return result;
}
例如:当我在
binToHex
中输入1011时,我得到的结果是3F3,但是,当我手动通过这两种方法时,首先在binToDec
上输入1011,然后在decToHex
上使用binToDec
的结果,我得到了正确的答案。为什么我把它们放在一个方法中会有不同呢?事实上,这只是一个小错误。而不是String result=decToHex(num)代码>,您应该有字符串结果=decToHex(binToDec)代码>。如您所见,您要求的是1011(十进制)的十六进制,即3F3。您有一个输入错误,decToHex(num)
应该是decToHex(binToDec)
,因此您在第二个函数中使用第一个函数的结果
public static String binToHex(int num) {
int binToDec = binToDec(num);
String result = decToHex(binToDec); // Typo was here
return result;
}
您在decToHex
中调用num,而不是binToDec
,这就是输出错误的原因。只是输入错误。您没有使用binToDec
变量。我希望binToDec()
和decToHex()
接受字符串输入int
s没有基数。为什么我没有看到这么小的错误。。。。谢谢你,比芬。我怎么才能关闭这个帖子?是的,我知道了