如何在InputMismatchException之后重试输入?

时间:2016-09-12 21:36:36

标签: java validation exception try-catch user-input

我正在创建一个从用户那里获取输入的程序。如果用户输入了无效命令,我想重新运行输入选项。像这里只有整数输入是首选,但如果用户输入文本,那么我想捕获异常并重新运行该方法。

我试过这个但它让我变成了一个无限循环。这是实现这个目标的最佳方法。如果有人帮助我,那就太好了。

    boolean retry = true;

    while(retry){

        try{
            //considering response from the user
            System.out.print("\nEnter Your Command : ");
             f_continue =  processresponse(scanner.nextInt());
             retry = false;
        }catch(InputMismatchException e){

            System.err.println("\nPlease Input a Valid Command from 1-5 or 0 for Exit");




        }

    }

1 个答案:

答案 0 :(得分:1)

如果输入的不是整数,nextInt()将抛出异常,输入的内容仍然在输入缓冲区中,因此下次调用nextInt()时,您将读到同样糟糕的输入。您应该首先调用hasNextInt()以查看输入是否为整数;如果没有,只需调用nextLine()跳过错误输入(并写一条消息告诉用户重新尝试)。

或者你可以在catch块中调用scanner.nextLine()