2015-04-28 87 views
0

我想在java中創建一個簡單的while循環,要求用戶輸入一個數字並將其存儲在一個變量中。我也在檢查以確保他們輸入的值是一個數字。循環應該告訴用戶,如果他們輸入字符串,他們沒有輸入數字。它還應該讓用戶在告訴他們沒有輸入號碼後再次輸入號碼。Java while while循環捕捉不匹配異常

此刻,如果用戶輸入一個字符串,此代碼將無盡地捕獲異常。我如何獲得這個循環的工作?

Scanner reader = new Scanner(System.in); 
isInt = false; 
while(!isInt){ 
    try{ 
     System.out.println("Enter a number");      
     int aNumber = reader.nextInt(); 
     isInt = true; 
    } 
    catch(InputMismatchException e){ 
     System.out.println("You didn't enter a number"); 
    }  
} 
+0

使用parseInt檢查數字格式異常 –

+0

更熟悉[scanner](http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html)class to使用/檢查輸入的數字。如果用戶沒有輸入數字,則結束循環。 – MaxZoom

回答

3

nextInt()方法不消耗非數字輸入。此方法的Javadocs引用過載方法nextInt(int),其中指出:

將輸入的下一個標記掃描爲int。如果下一個標記無法轉換爲有效的int值,則此方法將拋出InputMismatchException,如下所述。 如果翻譯成功,則掃描儀前進通過匹配的輸入。

(重點煤礦)

catch塊,添加調用reader.next()消耗線(和忽略)的非數字輸入,從而使下一個標記可以的下一個迭代進行檢查您的while循環。

+0

謝謝!這解決了它。 – mgrantnz