java – 如何安全地扫描整数输入?

前端之家收集整理的这篇文章主要介绍了java – 如何安全地扫描整数输入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > How to use Scanner to accept only valid int as input                                    6个
>            How to handle infinite loop caused by invalid input (InputMismatchException) using Scanner                                    5个

Scanner scanner = new Scanner();
int number = 1;

do
{
    try
    {
        option = scanner.nextInt();
    }
    catch (InputMismatchException exception)
    {
        System.out.println("Integers only,please.");
    }
}
while (number != 0);

尽管存在异常处理,但在给出非整数输入时,此代码将进入无限循环.它不再是Scanner在下一次迭代中暂停收集输入,而是继续抛出InputMismatchExceptions直到程序被终止.

扫描整数(或其他类型,我猜)输入,丢弃无效输入并正常继续循环的最佳方法是什么?

最佳答案
在尝试将输入值分配给int之前,应检查输入是否可以解析为int.您不应该使用异常来确定输入是否正确,这是不好的做法,应该避免.

if(scanner.hasNextInt()){
   option = scanner.nextInt();
}else{
   System.out.printLn("your message");
}

这样,您可以检查输入是否可以解释为int,如果是,则分配值,如果不显示消息.调用方法不会使扫描仪前进.

猜你在找的Java相关文章