所以我目前正在处理这个问题[请记住,我将大部分代码排除在外因为它已经很长了]
int choice = 0;
while (choice != 7){
System.out.println("--- Mathematical Calculator ---");
System.out.println("");
System.out.println("Pick an operation from the list - Use nos. 1 to 7");
System.out.println("1) Multiplication");
System.out.println("2) Division");
System.out.println("3) Addition");
System.out.println("4) Subtraction");
System.out.println("5) Find the area of a regular object");
System.out.println("6) Find the volume of a regular object");
System.out.println("7) Exit Program");
**boolean ok = false;
do {
try{
choice = userInput.nextInt();
ok = true;
} catch (InputMismatchException e){
System.out.println("Invalid input");
}
}
while (ok = false);**
switch (choice) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
System.out.println("Thanks for using my program");
System.out.println("Program terminated");
break;
default: System.out.println("Invalid choice");
}
}
userInput.close();
}
所以目前,当我运行程序并输入非整数的东西时,程序将提供以下输出:
--- Mathematical Calculator ---
Pick an operation from the list - Use nos. 1 to 7
1) Multiplication
2) Division
3) Addition
4) Subtraction
5) Find the area of a regular object
6) Find the volume of a regular object
7) Exit Program
Invalid input
Invalid choice
Over
And over
And over
我知道我可能在异常处理方面做错了(程序在有效输入时工作正常),但我真的不知道如何解决它。
帮助?
答案 0 :(得分:3)
你需要在你的例外中使用userInput.nextLine()
来抓住\ n \ r \ n并且它会像这样停止打印
catch (InputMismatchException e){
System.out.println("Invalid input");
userInput.nextLine();
}
答案 1 :(得分:2)
while (ok = false);
应为while (ok == false);
或while (!ok);
。
ok = false
是一项任务。
另外,我猜你有意将这些案例留空,但即便如此,请确保在每个案例上加break;
,否则将始终执行选项7。
编辑:对于无限循环,您还应该执行Kevin Esche在his answer(+1)中建议的内容。