如何在 InputMismatchException 后重试输入?
How to retry input after an InputMismatchException?
我正在创建一个从 user.Now 获取输入的程序 如果用户输入无效命令,我想重新 运行 输入选项。像这里一样,只有整数输入是首选,但如果用户输入文本,那么我想捕获异常并重新 运行 方法。
我已经试过了,但它让我变成了无限 loop.What 将是实现这一目标的最佳方式。如果有人能帮助我就太好了。
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()
会抛出异常,输入的内容仍会在输入缓冲区中,所以下次调用nextInt()
时,会读取相同的错误输入。您应该先调用 hasNextInt()
以查看输入是否为整数;如果没有,只需调用 nextLine()
跳过错误输入(并写一条消息告诉用户重试)。
或者您可以在 catch 块中调用 scanner.nextLine()
。
我正在创建一个从 user.Now 获取输入的程序 如果用户输入无效命令,我想重新 运行 输入选项。像这里一样,只有整数输入是首选,但如果用户输入文本,那么我想捕获异常并重新 运行 方法。
我已经试过了,但它让我变成了无限 loop.What 将是实现这一目标的最佳方式。如果有人能帮助我就太好了。
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()
会抛出异常,输入的内容仍会在输入缓冲区中,所以下次调用nextInt()
时,会读取相同的错误输入。您应该先调用 hasNextInt()
以查看输入是否为整数;如果没有,只需调用 nextLine()
跳过错误输入(并写一条消息告诉用户重试)。
或者您可以在 catch 块中调用 scanner.nextLine()
。