Java : 做 While 循环,同时接受所有有效输入,应该只有一个
Java : do While loop, all valid inputs accepted at the same time, only one should be
Scanner console = new Scanner(System.in);
//where the menu would be
String menuInput;
//if what user inputs isn't "1", "2" or "3", an error message is shown
do {
menuInput = console.next();
if (!menuInput.equals("1") && !menuInput.equals("2") && !menuInput.equals("3")) {
System.out.println("Enter Valid Input");
}
} while (!menuInput.equals("1") && !menuInput.equals("2") && !menuInput.equals("3"));
我有一个包含 3 个选项的菜单,通过输入 "1"、"2" 或 3" 来选择每个选项, 但是当这 3 个选项的任意组合有效时输入之间输入 space,例如“1 2”,它将接受它作为有效输入。
有没有办法确保它一次只接受一个有效输入?
您的问题:console.next()
。这从输入中获取下一个 token - 这是 space-delimited。所以“1 2”的输入不会 return“1 2” - 它 return 是“1”,因为它到达了 space 和 return 之前的所有内容它作为一个 令牌.
如果你想 return 整行,使用 console.nextLine()
,直到换行符(回车键)。这将使您的代码按照您的意愿运行。
可以修改您的代码以接受整行输入,而不仅仅是第一组字符。
此行从输入缓冲区的开头获取用户输入,直到第一个 space 或行尾字符,以先到者为准。
menuInput = console.next()
获取整行用户以下内容。它将从输入缓冲区的开头获取输入,直到行尾字符。
menuInput = console.nextLine()
Scanner console = new Scanner(System.in);
//where the menu would be
String menuInput;
//if what user inputs isn't "1", "2" or "3", an error message is shown
do {
menuInput = console.next();
if (!menuInput.equals("1") && !menuInput.equals("2") && !menuInput.equals("3")) {
System.out.println("Enter Valid Input");
}
} while (!menuInput.equals("1") && !menuInput.equals("2") && !menuInput.equals("3"));
我有一个包含 3 个选项的菜单,通过输入 "1"、"2" 或 3" 来选择每个选项, 但是当这 3 个选项的任意组合有效时输入之间输入 space,例如“1 2”,它将接受它作为有效输入。
有没有办法确保它一次只接受一个有效输入?
您的问题:console.next()
。这从输入中获取下一个 token - 这是 space-delimited。所以“1 2”的输入不会 return“1 2” - 它 return 是“1”,因为它到达了 space 和 return 之前的所有内容它作为一个 令牌.
如果你想 return 整行,使用 console.nextLine()
,直到换行符(回车键)。这将使您的代码按照您的意愿运行。
可以修改您的代码以接受整行输入,而不仅仅是第一组字符。
此行从输入缓冲区的开头获取用户输入,直到第一个 space 或行尾字符,以先到者为准。
menuInput = console.next()
获取整行用户以下内容。它将从输入缓冲区的开头获取输入,直到行尾字符。
menuInput = console.nextLine()