java Scanner類的nextInt()方法在循環中沒法中止的問題

咱們先看JAVA的api文檔中的原話:java

當掃描器拋出 InputMismatchException 時,該掃描器不會傳遞致使該異常的標記,所以能夠經過其餘某種方法來獲取或跳它。
                    這是java API文檔中的原話。

其實其意思就是說:```
若是nextInt方法執行時輸入a字符,這個時候沒有成功解析出一個整數,那麼你的本次輸入不會被忽略。由於它或許能被其它格式解析。
那麼你的程序中輸入了a後,出現異常,number被賦值100,開始下一次循環,但這時數據緩衝區內你上次輸入的a還在,並無清除,這時繼續解析a,仍是錯誤,因而這個過程就一直重複下去了。api

 
 

因此解決的方法有不少,舉一個例子:緩存

如今你要改的是,出現錯誤把此次的輸入清除,只要在catch中,加一句:input.next()就搞定了!,其實意思就是說把上一次的緩存清除就好了。
                    也能夠將Scanner寫在try裏面
相關文章
相關標籤/搜索