2015-02-23 172 views
-3

我認爲我的代碼是正確的,但是當我運行它時,我的輸出語句在底部不會產生。我要求鍵盤輸入任意數字,然後輸入-1結束。我的while循環包括添加數字,創建總和,以及給出偶數的數量。當我測試我的代碼時,我一直在輸入1,2,3,4,希望能夠產生4個總數。 2甚至是10的總和。爲什麼'我的代碼沒有進入打印語句?如何關閉while循環

public static void main(String[] args) { 
    Scanner sc = new Scanner (System.in); 
    System.out.println("Please enter a number. Enter -1 to stop program."); 
    int num = sc.nextInt(); 
    int counter = 0; 
    int even = 0; 
    int sum = 0; 
    while (num != -1) 
    { 
     counter += 1; 
     sum += num; 
     if (num%2 == 0) 
     { 
      even +=1; 
     } 

    } 
    System.out.println("You have entered "+ counter + "number(s)"); 
    System.out.println("You have entered "+ even + "even numbers"); 
    System.out.println("The sum for the numbers you entered is "+ sum); 

} 
+2

你永遠不會修改'num'的值,因此如果'num!= -1',這將是一個無限循環。 – rcs 2015-02-23 03:34:50

+0

這是否意味着我需要在我的while循環中詢問掃描儀是否有另一個int? – JavaBeginner 2015-02-23 03:35:37

+0

是的,你需要讓掃描儀的另一個int來輸入一個新的值。你可以在while循環的最後部分做到這一點。 – rcs 2015-02-23 03:37:10

回答

1

你永遠不會再次獲得輸入,因此循環無限運行。你需要再次獲得價值。

while (num != -1) 
{ 
    ... 

    num = sc.nextInt(); 
} 
+0

知道了謝謝! – JavaBeginner 2015-02-23 03:37:25

+0

我想說但我不能接受一個答案,直到10分鐘起來 – JavaBeginner 2015-02-23 03:40:42

+0

@JavaBeginner謝謝! – Dando18 2015-02-23 03:41:19

0

在進入循環之前設置num。

那麼,什麼時候在while循環中改變了num?它沒有。這就是爲什麼你的代碼不會退出循環。

我建議把這個

num = sc.nextInt(); 

內循環。