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()