2016-02-06 82 views
-3

我試圖要求用戶繼續鍵入數字,直到他們鍵入-1,一旦他們做的代碼會說謝謝你以後再見!我現在有點卡住,因爲我的循環是無限循環,我試圖在不使用迭代的情況下解決它。這是我的。閱讀數字,直到遇到條件

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = Integer.parseInt(reader.nextLine()); 
while (num < -1 || num > -1) { 
    System.out.println(num); 
     if (num == -1) { 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 

} 
+0

因爲你用你的循環是無限的最初輸入的是相同的「num」值。它在循環中從不改變,並且沒有機會改變,理解? –

+0

@SashaSalauyou是的,我知道這是問題,我只是永遠不知道你可以把Integer.parseInt(reader.nextLine());本身,我認爲你必須始終將它分配給一個變量。 – Nabz

回答

1

試試這個代碼:

Scanner reader = new Scanner(System.in); 
int num = 0; 
System.out.println("Type numbers: "); 
while(true){ 
    //get user input 
    num = Integer.parseInt(reader.nextLine()); 
    if(num == -1){ 
     System.out.println("Thank you and see you later!"); 
     break; 
    } 
} 
+0

這個工程,但我想要「輸入數字:」在輸出中只顯示一次,我有這個,但我不假設有類型數字一遍又一遍地顯示 – Nabz

+0

只需在循環前面輸入「類型數字:」即可。 – Makandal

2

您需要讀取循環內的輸入。你只做了一次(在進入循環之前),所以num的值永遠不會改變。此外,您可以通過使用while (num != -1)

所以最終簡化您的病情時,你會想是這樣的:

Scanner reader = new Scanner(System.in); 
System.out.println("Type numbers: "); 
int num = 0; 
while (num != -1) { 
    num = Integer.parseInt(reader.nextLine()); 

     if (num == -1) { 
      System.out.println("Thank you and see you later!"); 

    }else{ 
     System.out.println(num); 
    } 

} 
+0

如果你在條件滿足後立即斷開,不需要在while()中檢查它@ –

+0

@Chris你的代碼不起作用,因爲每次你輸入一個數字,它都不會真的經過循環,而0總是在你輸入的數字後面打印,因爲num = 0並且永遠不會改變 – Nabz

+0

@Nabz,你是對的。我做了一個編輯來清理它。 – Chris