Java:do-While循环,同时接受所有有效输入,只接受一个
我有一个有3个选项的菜单,每个选项都是通过输入“1”、“2”或“3”来选择的,但是,当输入3个有效输入的任意组合时,它们之间有一个空格,例如“1 2”它将接受它作为有效输入Java:do-While循环,同时接受所有有效输入,只接受一个,java,validation,if-statement,do-while,Java,Validation,If Statement,Do While,我有一个有3个选项的菜单,每个选项都是通过输入“1”、“2”或“3”来选择的,但是,当输入3个有效输入的任意组合时,它们之间有一个空格,例如“1 2”它将接受它作为有效输入 有没有办法确保它一次只接受一个有效的输入?您的问题:控制台。next()。这会从输入中获取下一个标记,该标记是空格分隔的。。因此,“12”的输入不会返回“12”,而是返回“1”,因为它到达该空间并将其之前的所有内容作为一个标记返回 如果要返回整行,请使用console.nextLine(),直到换行(回车键)。这将使您的代码
有没有办法确保它一次只接受一个有效的输入?您的问题:
控制台。next()
。这会从输入中获取下一个标记,该标记是空格分隔的。。因此,“12”的输入不会返回“12”,而是返回“1”,因为它到达该空间并将其之前的所有内容作为一个标记返回
如果要返回整行,请使用
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"));
要获取整行用户,请执行以下操作。它将从输入缓冲区的开始到行尾字符获取输入
menuInput = console.next()
你能给我们举一个例子吗,你给出的输入,你得到的电流输出和你想要得到的吗?
menuInput = console.nextLine()