2014-12-01 63 views
0

所以基本上這個代碼應該不斷詢問「請插入一個有效的數字」,直到通過鍵盤引入一個整數。它工作得很好,我只是好奇它究竟是如何做到的。這段代碼如何與緩衝區一起工作? Java

Scanner input = new Scanner(System.in); 
System.out.println("Please insert the number of lives."); 
while (!input.hasNextInt()) { 
    input.next(); 
    System.out.println("Please insert a valid number."); 
} 
numberOfLives = input.nextInt(); 

在我的腦海裏,放置numberOfLives = input.nextInt();在while循環內部。這基本上就是我從這個片段瞭解一旦到達while循環:在同時

  1. 檢查條件,如果掃描儀輸入變量沒有一個int值,請執行下列操作
  2. 放棄是什麼在掃描儀輸入變量
  3. 打印出有效的數字消息

顯然,這不是它如何去,否則這段代碼是行不通的。我想也許每次它檢查條件,實際!input.hasNextInt()再次打開緩衝區的輸入,然後檢查裏面的東西,但我不知道。

對不起,如果我沒有正確使用這些條款,現在很適合所有這些東西。

謝謝!

回答

0

就像迭代器一樣,掃描器將始終指向流開始前的元素。即如果列表以位置0開始,則掃描器將指向第-1個位置。 next()將使掃描器前進並返回出現在位置的元素。 在這段代碼中,我們正在檢查下一個元素是否是整數。如果不是,爲什麼要推進掃描儀?