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个有效输入的任意组合时,它们之间要有空格,例如“ 1 2”,它将接受它作为有效输入。

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

最佳答案

您的问题:console.next()。这从输入中获取下一个标记-由空格分隔。因此,输入“ 1 2”不会返回“ 1 2”-它会返回“ 1”,因为它到达该空间并返回它之前的所有内容作为一个令牌。

如果要返回整行,请使用console.nextLine(),它将一直行到换行符(回车键)。这将使您的代码按需运行。

10-08 11:34