2015-02-11 113 views
-1

嗨,我是新來的,通常是編程新手。我的老師告訴我們試着用一個小數到雙轉換器。那麼我試着這樣做,並認爲我在正確的方式,但不知何故代碼只是繼續運行,而不顯示轉換的數字。所以我認爲它裏面可能有一個無限循環,但作爲一個新手程序員,我無法找到它。幫助將不勝感激。我想我得到了一個無限循環

下面是代碼:

import javax.swing.*; 

public class dezimalZuDual { 
    public static void main(String[] args) { 
    int dezimalZahl = Integer.parseInt(JOptionPane.showInputDialog("Hier eine Dezimalzahl eingeben:")); 
    int neu = dezimalZahl; 
    String dualZahl = ""; 

    while(neu != 0) 
    { 
     neu = dezimalZahl/2; 
     String rest = Integer.toString(dezimalZahl - neu * 2); 
     dualZahl = rest + dualZahl; 

    } 
    JOptionPane.showMessageDialog(null, "Die Dezimalzahl " + dezimalZahl + " ist im Dualzahlensystem ausgedrückt: " + dualZahl + "."); 
} 
} 

的代碼編譯沒有任何錯誤,我在最後一行的消息將只是從未被顯示。

+6

嘗試使用調試器 – ControlAltDel 2015-02-11 17:56:09

回答

7

這裏的問題是,你在做neu = dezimalZahl/2;,它改變了neu,但你永遠不會改變dezimalZahl

例如:

dezimalZahl = 10; 
neu = 10/2 // (which is 5); 
// rest of your code 

然後你檢查neu != 0,因爲它是5。然後你通過你的循環運行一遍,你做同樣的事情是真實的,但dezimalZahl仍然是10!這意味着neu將始終爲5,這意味着你永遠不會離開循環。

1

的問題是,neu從未改變

while(neu != 0) 
    { 
     neu = dezimalZahl/2; 
     String rest = Integer.toString(dezimalZahl - neu * 2); 
     dualZahl = rest + dualZahl; 

     //you are not changing(decreasing) value of neu 
     //nor you are changing dezimalZahl which would affect neu value 
     //so while loop returns true everytime and goes on 
    } 
相關問題