关于#java#的问题:会一直输出again,不会在scanner处停止让我输入一个值

我的想法是如果我输入的不是整型,就抛出异常,直到我输入的是整型,但实际是如果我输入的不是整型,会一直输出again,不会在scanner处停止让我输入一个值,why?
代码如下:

img

因为你输入错误时,输入流里还有个错误的数据和换行符等待接收, 捕获了异常后 ,下一次 要接收整数,结果还是遇到错误数据和换行符,又报错,继续前面的错误,也就一直打印 again。
解决办法,在 异常捕获里面,使用 如下接收一下错误数据

scanner.nextLine();

你把scanner的创建丢到while里面就行了