【发布时间】:2014-12-28 08:48:46
【问题描述】:
在我的程序中,我试图让用户输入一个介于 1-3 之间的 int,然后根据他们输入的内容做一些事情。如果它不是数字或不是选项之一,那么它将允许他们重新输入一个有效的选项。
我遇到的问题是我无法集思广益,如何不让它无限循环,只允许他们在控制台告诉他们输入无效输入后输入一个数字。
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;
}
}
【问题讨论】:
-
不清楚你要达到什么目的
-
我需要一种方法来检查用户是否输入了 1-3 之间的有效输入,但如果他们没有重新输入有效输入的能力。
-
看我的答案,我认为它比当前接受的答案更好,因为代码被分解并且循环的退出条件更清晰。使用带中断的
while (true)循环不是一种好的编程风格 -
@Dici 是的,我做到了,我实现了它来代替我所拥有的
-
好的,我说当接受的答案不是当前答案时。确实,我没有在
catch子句中看到问题,因此我的回答并不完整
标签: java while-loop infinite-loop ioexception