1. 程式人生 > >java Scanner類的nextInt()方法在循環中無法停止的問題

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

scan 忽略 exce inpu () 整數 成功 如果 標記

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

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

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

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

                        現在你要改的是,出現錯誤把這次的輸入清除,只要在catch中,加一句:input.next()就搞定了!,其實意思就是說把上一次的緩存清除就行了。
                    也可以將Scanner寫在try裏面

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