异常后继续while循环
我有这段代码。我想回到循环的起点,并再次要求用户输入。但是,它总是循环而不停止请求输入。我的代码有什么问题?谢谢
while(true){ ...
try {
int choice = input.nextInt(); <<---=- this should stop and ask for input, but it always loops without stopping.
} catch (InputMismatchException e){
<< I want to return to the beginning of loop here >>
}
}
回答:
从http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29:
“如果翻译成功,则扫描程序将前进经过匹配的输入。”
啊,但是如果翻译是什么 不是
成功的?在这种情况下,扫描仪不会前进超过任何输入。错误的输入数据将保留为下一个要扫描的内容,因此循环的下一次迭代将失败,就像上一个循环一样-
循环将不断尝试读取相同的错误输入。
为了防止无限循环,您必须提前越过不良数据,以便获取扫描程序可以读取为整数的值。下面的代码段通过调用input.next()来实现:
Scanner input = new Scanner(System.in); while(true){
try {
int choice = input.nextInt();
System.out.println("Input was " + choice);
} catch (InputMismatchException e){
String bad_input = input.next();
System.out.println("Bad input: " + bad_input);
continue;
}
}
以上是 异常后继续while循环 的全部内容, 来源链接: utcz.com/qa/411494.html