2014-10-08 51 views
0

我有我的算法问题的十进制数转换成二进制数,而不使用解析,这是代码的相关章节:数学计算十进制到二进制(JAVA)

public static void dtb(){ 
    System.out.print("\nDenary number to convert?(lower than 255): "); //eight bit conversion 
    int num = sc.nextInt(); 
    int decVal = 128; 
    int saveNum = num; //save point for the first input 
    int[] arr; 
    arr = new int[8]; 
     do{ 
      if (num - decVal > 0){ //binary to decimal 
       num = num - decVal; 
       arr[x] = 1; 
      } else arr[x] = 0; 
       decVal = decVal/2; 
       x++; 
     } while (decVal != 1); 
    System.out.print("\nBinary value of "+saveNum+" is: "+arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6]+arr[7]); 
} 

x被宣布初始化静态的,因此出于观点。我也知道错误在哪里,但我无法找到正确的方法来完成它,因此寻求帮助。我也是相当新的,所以任何其他方法的帮助将不胜感激。感谢您的任何帮助。输出=(输入= 42)00101000

回答

1

的 实施例,则需要比较num - decVal是否大于或等于0。因为你有>,你错过了这种情况,那么它等于0,你错过了1位。

if (num - decVal >= 0){ 

此外,你需要循环而decVal不等于0,而不是1,否则你会错过奇数的最后一位。

} while (decVal != 0); 

输出变化在于:

Binary value of 42 is: 00101010 
Binary value of 43 is: 00101011 
+0

非常感谢你的工作为目的,这样一个简单的变化需求,不知道如何溜过去的我! – joescull 2014-10-08 16:39:22