异常后继续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

回到顶部