我正在尝试在java中创建一个简单的while循环,要求用户输入一个数字并将其存储在变量中。我还在检查以确保他们输入的值是一个数字。循环应告诉用户,如果他们输入字符串,他们没有输入数字。它还应该要求用户在告诉他们没有输入数字后再次输入数字。
目前,如果用户输入字符串,此代码会无休止地捕获异常。如何让此循环工作?
Scanner reader = new Scanner(System.in);
isInt = false;
while(!isInt){
try{
System.out.println("Enter a number");
int aNumber = reader.nextInt();
isInt = true;
}
catch(InputMismatchException e){
System.out.println("You didn't enter a number");
}
}
nextInt()
方法不使用非数字输入。 此方法的 Javadocs 引用了重载方法nextInt(int)
,其中指出:
将输入的下一个标记扫描为 int。如果下一个标记无法转换为有效的 int 值,则此方法将引发 InputMismatchException,如下所述。如果翻译成功,扫描程序将前进到匹配的输入之外。
(强调我的)
在 catch
块中,添加一行,该行调用 reader.next()
来使用(并忽略)非数字输入,以便可以在 while
循环的下一次迭代中检查下一个标记。