我的异常处理中的无限循环?

时间:2017-04-06 18:27:45

标签: java exception

我试图在菜单上验证用户的输入。选项分别为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();

清除输入缓冲区,但什么也没做。任何帮助将不胜感激。

2 个答案:

答案 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()