我有一个菜单,其中整数零到六有不同的操作。如果用户输入正确,它会成功执行操作并再次要求输入以执行下一个操作。要退出程序菜单,用户输入必须为 6。如果收到任何无效输入,它会打印“无效选项”并重新打印要求输入。我的代码是:
int menuSelection;
Scanner reader = new Scanner(System.in); // Reading from System.in
do
{
System.out.println("Enter a number: ");
if (reader.hasNext(Pattern.compile("^[0-6]$")))
{
menuSelection = reader.nextInt();
}
else
{
System.out.println("Invalid option");
reader.next();
}
} while(menuSelection != 6);
//once finished
reader.close();
我的输出是:
Enter a number:
1
Enter a number:
2
Invalid option
Enter a number:
3
Invalid option
Enter a number:
4
Invalid option
Enter a number:
5
Invalid option
Enter a number:
6
Invalid option
Enter a number:
7
Invalid option
Enter a number:
8
Invalid option
Enter a number:
pancake
Invalid option
Enter a number:
所以它正确地处理了我给它的第一个输入,但在那之后,它陷入了无限循环,因为它总是认为我的输入不正确。我的逻辑是有一个 do while 只要menuSelection不是 6就总是重复,因为这是程序将永远退出的唯一时间,其他一切都应该循环回到等待输入。所以然后在 do while 循环中我希望我可以在那里进行错误检查,确保输入在 0-6 的范围内并且也是严格的整数类型,否则在不执行操作的情况下再次通过循环(这不是t 实际上已编码到 if 块中)。
我对 Java 还很陌生,所以我不是最熟悉 Scanner 以及它如何处理验证的人。我想我的问题是,是什么导致我的其他输入无效?
慕斯王
相关分类