2014-10-08 85 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