繁体   English   中英

InputMismatchException之后如何重试输入?

[英]How to retry input after an InputMismatchException?

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

我已经尝试过了,但是这使我陷入无限循环,这将是实现此目标的最佳方法。 如果有人在这方面帮助我,那就太好了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM