我使用while循环来确保输入到scanner对象的值是一个整数:
while (!capacityCheck) {
try {
System.out.println("Capacity");
capacity = scan.nextInt();
capacityCheck = true;
} catch (InputMismatchException e) {
System.out.println("Capacity must be an integer");
}
}
然而,如果用户没有输入一个整数,当它应该返回并接受另一个输入时,它只是重复地打印“Capacity”,然后是catch中的输出,而不要求更多的输入。我要怎么阻止这一切?
5条答案
按热度按时间6vl6ewon1#
把这段代码放在你的
catch
块中,在你输入错误的情况下,使用非整数字符沿着留在缓冲区中的新行字符(因此,无限地打印catch sysout)。当然,还有其他更简洁的方法来实现你想要的,但我想这需要在你的代码中进行一些重构。
ulydmbyx2#
使用以下内容:
6vl6ewon3#
试试这个:
krugob8w4#
把这个放在循环的最后-
或者最好把它放在catch块中。
pod7payv5#
我认为不需要try/catch或
capacityCheck
,因为我们可以访问hasNextInt()
方法,该方法检查下一个令牌是否为int。例如,这应该做你想要的: