2014-09-29 114 views
-1

我的程序不會停止運行,我不確定我做錯了什麼。預先感謝任何幫助!在java中修復無限循環

public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 

     ArrayList<NumberOperations> numOpsList = new ArrayList<NumberOperations>(); 

     System.out.println("Enter a list of positive integers separated " 
         + "with a space followed by 0:"); 


     int x = in.nextInt(); 

     NumberOperations newNumOp = null; 

     while (x != 0) { 
     newNumOp = new NumberOperations(x); 

     numOpsList.add(newNumOp); 

     int index = 0; 

     while (index < numOpsList.size()) { 
      NumberOperations num = numOpsList.get(index); 
      System.out.println("For: " + num); 

      // add print statement for odds under num 
      System.out.println("\tOdds Under: " + newNumOp.oddsUnder()); 

      // add print statement for powers of 2 under num 
      System.out.println("\tPowers of 2 under: " + newNumOp.powersTwoUnder()); 

      index++; 
     } 
     } 

    } 
+5

您可以從修改'x'開始。 – 2014-09-29 00:28:23

+0

解釋你的程序做什麼以及預期的結果是什麼? – 2014-09-29 00:29:24

+1

你爲什麼期望它停止? – SLaks 2014-09-29 00:30:38

回答

1

x = in.nextInt();必須在while循環內。

... 

int x = -1; 
... 

while (x != 0) { 

    x = in.nextInt(); 
    .... 
    } 
0

我想你應該不是檢查或者指數x的或使用x--

X是從來沒有被設置爲零,這是造成你的無限循環。

0

你有一個循環條件x,你永遠不會改變:

While (x != 0){ 
    // loop code 
} 

然而,循環代碼doesn't改變x值。

-1

您不更新外部WHILE循環中的x。