【发布时间】:2022-01-16 22:25:09
【问题描述】:
我正在尝试获取用户输入并检查它是“1”还是“2”,如果不是则显示错误消息。即使输入正确,我也会不断收到错误消息。
Scanner user_input = new Scanner(System.in);
String choice = "";
// Input Validation
do {
// Read user choice
choice = user_input.nextLine();
if (!choice.equals("1") || !choice.equals("2"))
System.out.println("Invalid input. Give new value");
}while (!choice.equals("1") || !choice.equals("2"));```
【问题讨论】:
-
想一想
!choice.equals("1") || !choice.equals("2")的确切含义。当a和b都为假时,a || b为假。你的两个 !equals 检查什么时候会是假的? -
其他可能使用
boolean标志来确定正确性(对于循环),您当前的方法有什么问题? -
@tgdavies 当我输入“1”,使条件为真时,它仍然拒绝停止循环
-
@panosttm 仅供参考,验证命令行输入并不是 (IMO) 对学习时间的最佳利用。 HTML5 的输入验证确实是最先进的。现在大部分时间你很可能会在服务器端使用 Java,在那里你可以使用 400 错误来表示“输入错误”
-
当条件为
false时,循环将退出,而不是true时。
标签: java validation input