java - 使用 Scanner 读取输入会导致 Java 中的无限循环

标签 java while-loop infinite-loop ioexception

在我的程序中,我试图让用户输入 1-3 之间的整数,然后根据他们输入的内容执行某些操作。如果它不是数字或不是选项之一,那么它将允许他们重新输入有效选项。

我遇到的问题是,我很难集思广益,如何不让它无限循环,并在控制台告诉他们输入了无效的输入后允许他们输入一个数字。

int i = 0;
while (i < 1) {
    try {
        int level = scan.nextInt();
        i+=1;
        if (level == 1) {
            System.out.println("You selected level 1!");
            //Start the game
        } else if (level == 2) {
            System.out.println("You selected level 2!");
            //Start the game
        } else if (level == 3) {
            System.out.println("You selected level 3!");
            //Start the game
        } else {
            System.out.println("That's not an option!");
            i-=1;
        }
    } catch(InputMismatchException input) {
        System.out.println("That's not an option!");
        i-=1;
    }
}

最佳答案

当您输入无效的输入时,需要清除它。输入异常触发时添加scan.next(),以便用 next() 清除它:

 catch(InputMismatchException input) {
        System.out.println("That's not an option!");
        scan.next();
        i-=1;
    }

关于java - 使用 Scanner 读取输入会导致 Java 中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684729/

相关文章:

Python 在列表中的元组中查找最大值、平均值、最小值和相加值

java - 无限循环,.nextLine() 用户输入

c - 如何实现无限循环

java - 为什么我使用 java TreeSet Compare 方法获得此输出?

java - 如何将代码中的for循环改为while循环?

JAVA 10 - java.sql.SQLException : No suitable driver found for jdbc:mysql://localhost:3306/error

Python 列表索引超出范围 python 在数组上

java - while 循环停止检查 if 语句?

java - perl 到 java 程序的持续响应

java - 斯坦福自然语言处理 : Keeping punctuation tokens?