2013-04-06 55 views
2

我試圖從用戶連續讀取輸入,直到用戶鍵入退出。我正在通過輸入'quit'來測試它,但是console.hasNext()似乎沒有返回false。事實上,程序似乎在第7行(hasNext()行)被阻塞。有任何想法嗎?Java掃描器hasNext()不返回false

boolean bool = true; 
    while (bool) { 
     System.out.println("Type 'quit':"); 
     Scanner console = new Scanner(System.in); 
     if (console.next().equals("quit")) { 
      System.out.println("You typed quit"); 
      System.out.println("check: " + console.hasNext()); // This line doesnt print 
      bool = false; 
     } 
    } 

回答

11

如果您Scanner被聲明爲System.in,它會問System.in如果要接收的下一個值。然後in類將等待用戶輸入內容,然後返回true。

保留hasNext()像文件,其中輸入大小是固定的。這樣,當Scanner查詢文件時,它有一個確定的hasNext()。相反,我建議將下一個值作爲字符串抓取,然後檢查它是否與整數格式匹配。如果是這樣,然後轉換它,否則,處理它,但是你想。