2013-10-23 116 views
4

爲什麼這項工作:爲什麼while循環有效?

Scanner keyboard = new Scanner(System.in); 
int i; 
int beerBottles = 100; 

//Asks the user for the number of beer bottles on the wall 
System.out.println("How many bottles of beer are on the wall?"); 

while (!keyboard.hasNextInt()) 
{ 
System.out.println("Make sure you enter an integer."); 
keyboard.next(); 
} 
//Sets beerBottles to the user entered value 
beerBottles = keyboard.nextInt(); 

我在這同時努力確保用戶的輸入是沒有用的try/catch整數迷迷糊糊的我不知道爲什麼它的工作原理,或者如果事情是窘況不對的我丟了。它似乎很好地工作,這將是偉大的,但我不明白爲什麼「確保你輸入一個整數」文本並不總是顯示。誰能解釋一下?

回答

6
keyboard.hasNextInt() 

阻塞,直到它有輸入檢查。當它發生時,如果它找到一個整數值,則返回true,否則返回false。

因此,如果輸入一個整數值,則永遠不會輸入while循環。如果沒有,循環內的keyboard.next()將清除您輸入的值,以便再次嘗試。

+0

這使得很多意義的感謝! – user2913241

0

只要您不輸入有效的整數值,Scanner.hasNextInt()不會返回true。由於hasNextInt()的否定在while條件下被檢查 - 它會輸出「確保你輸入了一個整數」。直到輸入一個整數值。

希望這有助於 Scanner.hasNextInt()

+5

一個建議:我認爲一些額外的信息會作出更好的答案...我認爲只是提供一個鏈接更適合評論 – Barranka