【发布时间】:2021-01-18 14:26:56
【问题描述】:
我正在尝试验证决定程序是否再次执行所有操作或终止的输入。虽然 Y 和 N 是唯一被接受的答案,但它实际上并没有命中 catch 语句——它只会循环直到输入 Y 或 N 因为 while 循环。我需要解决这个问题,以便为任何其他输入引发异常,但我不明白我做错了什么。
public static String validateChoice(Scanner sc, String choice) {
choice = "";
while (!choice.equalsIgnoreCase("Y") && !choice.equalsIgnoreCase("N")) {
try {
System.out.print("Continue? Y/N: ");
choice = sc.nextLine();
} catch (InputMismatchException e) {
System.out.println("Invalid answer. Please answer only Y or N. Lowercase is accepted.");
sc.nextLine();
continue;
}
}
return choice;
}
【问题讨论】:
-
Scanner.nextLine 不会抛出 InputMismatchException
-
由于给出的答案,我找到了一种方法来完成我正在寻找的东西。谢谢!
标签: java loops validation exception input