2013-10-07 74 views
0

該程序應該從用戶的單個輸入中接收四個整數(例如1 2 3 42)。我正在嘗試編寫一些代碼來檢查輸入是否全是整數。如何驗證單個輸入行是否只有整數?

然而,即使輸入是像1 2 B,它不進入while循環,我想不通爲什麼。任何幫助,將不勝感激。

Scanner scan = new Scanner(System.in);  
System.out.print("Please list at least one and up to 10 integers: "); 
scan.hasNextInt(); 

    while(!scan.hasNextInt()) 
     { 
      System.out.println("One or more of your inputs was not an integer. Please input only integers: "); 
      scan.next(); 
     } 
+0

我強烈建議你通過這個步驟與調試器。你會立刻看到你的錯誤是什麼。 –

回答

1

你沒有被讀下intScanner進展。

嘗試用輸入1 a b使用下面的代碼:

scan.hasNextInt(); 
scan.nextInt(); // or scan.next() to read next integer 
    while(!scan.hasNextInt()) 
     { 
      System.out.println("One or more of your inputs was not an integer. Please input only integers: "); 
      scan.next(); 
     } 

它會打印:

一個或多個輸入項是不是整數。請輸入只有 整數:

僅整數:一個或多個輸入項是不是整數。請輸入

+0

這確實有幫助,但我不明白爲什麼println在用戶再次輸入前迭代兩次,爲什麼? –

+0

讀取第一1之後,下一個標記是'A',其是非整數,在''TRUE'循環while'結果的條件,所以打印的第一行,然後執行'scan.next()'。現在進行第二次迭代,它看到'b'是非整數,'while'條件再次成立。所以它進入內部,再次打印並嘗試閱讀'next()'。但沒有什麼可讀的。 – Sage

相關問題