2012-01-09 295 views
0

我試圖擺脫一個循環,我只是想繼續輸入數字,直到我輸入0,這是我有,但我似乎無法打破它。打破循環

import javabook.*; 

class loop { 

    public static void main (String [] args) { 

     MainWindow mWin = new MainWindow(); 
     InputBox iBox = new InputBox(mWin); 

     int numbers = iBox.getInteger(""); 

     while (numbers > 0) { 
      if (numbers > 0) { 
       iBox.getInteger("EnterNumber"); 
      } else if (numbers == 0) { 
       break; 
      } 
     } 

    } 

} 
+3

縮進你的程序正確,您應該看出錯誤。 – 2012-01-09 15:20:00

+8

你從未將'數字'再次設置爲任何東西。 – 2012-01-09 15:20:07

+2

'while'循環中沒有更新'numbers' – 2012-01-09 15:20:14

回答

9

看起來你需要重新分配號碼的iBox.getInteger()結果。

嘗試改變

iBox.getInteger("EnterNumber"); 

numbers = iBox.getInteger("EnterNumber"); 
+0

哇。捕獲錯字可以讓你四起投票。做那五個。 :) – fireshadow52 2012-01-09 15:25:25

+0

謝謝你解決了這個問題 – BigC 2012-01-09 15:26:37

1

如果通過在調試器中的執行代碼,你會看到你不改變numbers while循環裏面,所以它永遠不會退出。

2

您設置一次數值。當它初始化時,但你永遠不會爲它分配另一個值。 我認爲這應該可行,但我還沒有測試過。

import javabook.*; 
class loop{ 
    public static void main (String [] args){ 

MainWindow mWin = new MainWindow(); 
InputBox iBox = new InputBox(mWin); 

int numbers = -1; 

while(numbers != 0){ 
    numbers = iBox.getInteger("EnterNumber"); 
} 
} 

}

2

嘗試do-while

int number; 

do { 
    number = iBox.getInteger("Enter number: "); 
} while (number > 0); 
1

也許你應該試試這個:

numbers = iBox.getInteger("EnterNumber"); 
1

按照建議,你最終會與此:

while (numbers > 0) 
{ 
    numbers = iBox.getInteger("EnterNumber"); 
} 
1

無用的突破。

else if (numbers == 0){ break; } 

是多餘的,因爲非常相同的,而條件將退出,如果號碼是0,另外如果也是多餘的。你可以做同樣的事情

while(numbers > 0){ 
    iBox.getInteger("EnterNumber"); 
} 

只要記住這是自數字永遠不會改變一個無限循環。

PS:獲得良好的編程書籍/教程