在我的程序中,我试图让用户输入 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/