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

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

當掃描器拋出 InputMismatchException 時,該掃描器不會傳遞導致該異常的標記,因此可以通過其他某種方法來獲取或跳它。
                    這是java API文檔中的原話。

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

所以解決的方法有很多,舉一個例子:

                        現在你要改的是,出現錯誤把這次的輸入清除,只要在catch中,加一句:input.next()就搞定了!,其實意思就是說把上一次的緩存清除就行了。
                    也可以將Scanner寫在try裏面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章