2016-02-26 1 views
0
public class Two { 

public static void main(String[] args) { 
    Scanner obj = new Scanner(System.in); 

    while(obj.nextInt() > 5) 
    { 

     System.out.println(obj.nextInt()); 
    } 
} 
} 

如果我第一次輸入數字(> 5),控制檯上沒有輸出,但是如果我在第二次輸入數字,請嘗試在控制檯上輸出。 所以我得到了一個輸出。 任何人都可以解釋爲什麼是這樣嗎?爲什麼輸出僅交替顯示?

+5

當你調用'nextInt()'的第二次嘗試從控制檯讀取另一個'int'。 – Bifz

+0

你在期待什麼? –

+0

您正在打印每個備選輸入。 – Kishore

回答

1

你得到輸出每隔一個輸入的原因是因爲你提示Scanner對象在你的循環系統中收集兩次輸入。每當您撥打Scanner上的next...方法時,您都在提示用戶。

因此,在您的while循環條件中,您要求用戶輸入一個值整數值,然後將其與5進行比較。然後,在打印語句中,再次調用nextInt()方法,然後再次提示用戶輸入另一個值整數。

因此,給定一系列6個整數輸入爲您的當前循環,​​3210,您循環將只打印24

相反,你應該及時和你的循環之外存儲一次,然後用條件測試和像這樣的循環中的打印之後重新提示...

int input = obj.nextInt(); 
while (input > 5){ 
    System.out.println(input); 
    input = obj.nextInt(); 
} 
+0

非常感謝!實際上我試圖在不存儲它的情況下進行打印。 – shiwchiz

3

java.util.Scanner.nextInt()方法將輸入的下一個標記掃描爲int並將其返回。在令牌被讀取後,另一個nextInt() - 將讀取(如名稱所述)下一個整數。

我認爲你是這樣期待着什麼:

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    int read; 

    while((read = scanner.nextInt()) > 5) 
    { 
     System.out.println(read); 
    } 
} 

現在讀整數存儲在變量read並打印,如果是大於五。