Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:do-While循环,同时接受所有有效输入,只接受一个_Java_Validation_If Statement_Do While - Fatal编程技术网

Java:do-While循环,同时接受所有有效输入,只接受一个

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(),直到换行(回车键)。这将使您的代码

我有一个有3个选项的菜单,每个选项都是通过输入“1”、“2”或“3”来选择的,但是,当输入3个有效输入的任意组合时,它们之间有一个空格,例如“1 2”它将接受它作为有效输入


有没有办法确保它一次只接受一个有效的输入?

您的问题:
控制台。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()