坏的异常处理?程序保持循环?

时间:2015-08-12 09:42:10

标签: java

所以我目前正在处理这个问题[请记住,我将大部分代码排除在外因为它已经很长了]

    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

我知道我可能在异常处理方面做错了(程序在有效输入时工作正常),但我真的不知道如何解决它。

帮助?

2 个答案:

答案 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)中建议的内容。