2012-11-07 56 views
0

你好,我有一個程序,成功地將十進制轉換爲二進制。但是,在最後,代碼將0除以0,最終導致錯誤消息。這是代碼。將數字轉換爲二進制,無法修復0/0錯誤

import java.lang.*; 
import java.util.*;  
public class BinaryConverter { 
public static void main (String[] argv) { 

    Scanner input = new Scanner (System.in); 


    int number = 0; 
    int factorOfTwo = 0; 

    do { 
     System.out.println("Enter the number to convert (0-255): "); 
     number = input.nextInt(); 
    } while (number< 0 || number > 255); 

    System.out.println("The number " + number + " converted to binary is : "); 

    for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo*=2) { 
     if (number/factorOfTwo >= 1){ 
      System.out.print("1"); 
      number -= factorOfTwo; 
     } 
     else System.out.print ("0"); 
    } 

} // end of main 
}// end of class 
+0

我沒有看到錯誤...如果您將變量聲明爲儘可能小的範圍,您的代碼將變得更乾淨,但它不會給我一個錯誤......什麼值失敗? –

+2

唯一的劃分是'factorOfTwo',我看不出'factorOfTwo'可以是零。 – NPE

+0

您可以使用['toBinaryString()'](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#toBinaryString%28int%29)。 – Sirko

回答

0

在發佈的代碼中沒有被零除。只有一個分區,factorOfTwo在該循環中永遠不能爲0。

如果仍然由零差錯,分工,確保您在此運行的代碼:

  1. 檢查編譯後的class文件更新的源文件。

  2. 檢查編譯後的類文件是否在類路徑中第一個。

另外,還要注意亞希的評論。您正在向後創建二進制數。

0

您收到的錯誤消息是什麼?因爲你的factorofTwo不能是0for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo*=2) ..它只是遞增的

+0

並且它應該遞減...... –

+0

是的。我同意@AkiSuihkonen。 'factorofTwo'的值應該以'128'開始,然後遞減。 128 - > 64 - > 32 - >等等。 – xan