咱们先看JAVA的api文档中的原话:java
当扫描器抛出 InputMismatchException 时,该扫描器不会传递致使该异常的标记,所以能够经过其余某种方法来获取或跳它。 这是java API文档中的原话。
其实其意思就是说:```
若是nextInt方法执行时输入a字符,这个时候没有成功解析出一个整数,那么你的本次输入不会被忽略。由于它或许能被其它格式解析。
那么你的程序中输入了a后,出现异常,number被赋值100,开始下一次循环,但这时数据缓冲区内你上次输入的a还在,并无清除,这时继续解析a,仍是错误,因而这个过程就一直重复下去了。api
因此解决的方法有不少,举一个例子:缓存
如今你要改的是,出现错误把此次的输入清除,只要在catch中,加一句:input.next()就搞定了!,其实意思就是说把上一次的缓存清除就好了。 也能够将Scanner写在try里面