Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用递归时,在方法中调用方法会得到不同的结果_Java_Recursion - Fatal编程技术网

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没有基数。为什么我没有看到这么小的错误。。。。谢谢你,比芬。我怎么才能关闭这个帖子?是的,我知道了