我试图在菜单上验证用户的输入。选项分别为1,2,3和4.我们在输入信件时尝试处理InputMismatchException
错误。我无法看到我做错了什么让我的代码陷入无限循环。
System.out.println("What will be your starting balance?");
double startingBalance =0;
boolean check = false;
while(!check) {
try {
startingBalance = input.nextDouble();
check = true;
}
catch (InputMismatchException e) {
System.out.println("Invalid input!");
//startingBalance = 0;
//e.printStackTrace();
//check = false;
}
}
看起来它进入了捕获部分,但是反复循环,而不是回到尝试。我尝试过input.nextDouble();
清除输入缓冲区,但什么也没做。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用input.nextLine();
清除catch区块中的扫描仪:
while (!check) {
try {
startingBalance = input.nextDouble();
check = true;
} catch (InputMismatchException e) {
System.out.println("Invalid input!");
input.nextLine();//this will clear your Scanner and repeat again
}
}
我可以问为什么你使用了nextLine()而不是nextDouble()?
因为nextLine
将扫描仪移动到下一行
答案 1 :(得分:0)
首次检查后需要设置boolean check = false,并使用input.nestLine()