提问人:Argemione 提问时间:6/22/2021 更新时间:6/22/2021 访问量:305
Java 扫描程序 - 循环,直到用户提供正确的输入 [duplicate]
Java scanner - Loop until the user provides a correct input [duplicate]
问:
代码的预期行为如下: 要求用户输入。当他们提供不正确的输入时,系统会再次询问他们,直到他们最终输入有效值。
下面是一个最小的示例:
int[] t = new int[2];
Scanner scanner = new Scanner(System.in);
while (true) {
try {
int k = scanner.nextInt();
System.out.println(t[k]);
break;
} catch (Exception e) {
System.out.println(e);
}
}
scanner.close();
(1) 如果用户键入“-1”,则在他们必须再次键入的内容之后(如预期),将打印相应的异常(即“java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 2”)。
(2)但是,如果用户键入“a”,则会无休止地打印相应的异常(即“java.util.InputMismatchException”)。
那么,您能解释一下 Scanner 类导致问题的原因/方式以及如何解决它吗?
答:
1赞
Argemione
6/22/2021
#1
(我在复习问题时想出了答案。也许这可以帮助其他人)
由于此指令引发了异常,因此该指令未完成,因此,“System.in”的“下一个”元素仍然相同(在示例(2)中为“a”)。因此,它无休止地引发相同的异常。int k = scanner.nextInt();
为了修复它,我只需要添加 catch 语句,这会导致程序要求新的用户输入。scanner.nextLine();
评论