Java 执行while循环错误(switch语句)

Java 执行while循环错误(switch语句),java,error-handling,switch-statement,do-while,Java,Error Handling,Switch Statement,Do While,我是java初学者,尝试在switch语句中实现许多情况下的do-while循环 do { switch (UserInput){ case "a2": case "a3": case "b1": case "b2": case "b3": case "c1": case "c2": case "c3": case "d1":

我是java初学者,尝试在switch语句中实现许多情况下的do-while循环

    do {

        switch (UserInput){
        case "a2":
        case "a3":
        case "b1":
        case "b2":
        case "b3":
        case "c1":
        case "c2":
        case "c3":
        case "d1":
        case "d2":
        case "d3":
            TextIO.putln("This is a valid move!");
            break;
            default:
                TextIO.putln("Not a valid choice, please try again!");
        }
        } while (UserInput!="a2");

然而,当选择有效时,它会不断重复“这是一个有效的移动”,反之亦然,当选择无效时。有人能帮忙吗

这是因为用户输入必须在循环中设置,因此用户可以键入其他内容。您只需设置一次用户输入,一次又一次地迭代…

我将给出一个使用
扫描仪(System.in)
的示例:


s.next()


如果没有该调用,while循环只会一遍又一遍地计算相同的
输入值,并向控制台发送垃圾邮件。

在每次迭代计算循环条件之前,您不会得到另一个要验证的输入。您需要使用扫描仪收集循环条件可以验证的另一个输入

 Scanner scn= new Scanner(System.in);
 do {

    switch (UserInput){
    case "a2":
    case "a3":
    case "b1":
    case "b2":
    case "b3":
    case "c1":
    case "c2":
    case "c3":
    case "d1":
    case "d2":
    case "d3":
        TextIO.putln("This is a valid move!");
        break;
        default:
            TextIO.putln("Not a valid choice, please try again!");
    }

    // We get the new input that we can check for validity
    UserInput = scn.nextLine();
    } while (!UserInput.equals("a2"));

你到底想做什么?嗯,在循环结束时,你需要获得另一个输入。否则,它将继续使用循环开始前收到的输入。在执行程序时,停止在页面上重复有效移动或无效移动的消息。获取其他输入是什么意思?正如我在这里所说的完全初学者。我假设
UserInput
是一个扫描仪,用于以某种形式收集用户的输入。因此,使用该变量在循环结束时获得第二个输入。您需要创建扫描仪:
scanner input=新扫描仪(System.in)然后您可以使用它来存储用户输入。
 Scanner scn= new Scanner(System.in);
 do {

    switch (UserInput){
    case "a2":
    case "a3":
    case "b1":
    case "b2":
    case "b3":
    case "c1":
    case "c2":
    case "c3":
    case "d1":
    case "d2":
    case "d3":
        TextIO.putln("This is a valid move!");
        break;
        default:
            TextIO.putln("Not a valid choice, please try again!");
    }

    // We get the new input that we can check for validity
    UserInput = scn.nextLine();
    } while (!UserInput.equals("a2"));