如何在InputMismatchException之后重试输入?

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

我试过这个但是它把我变成了一个无限循环。这是实现这个目标的最好方法。 如果有人帮助我这件事会很棒。

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"); } } 

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

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