做while循环错误(switch语句)

时间:2016-05-02 13:03:14

标签: 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":
        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");

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

3 个答案:

答案 0 :(得分:1)

我将举例Scanner(System.in)

Scanner s = new Scanner(System.in);
String input = "";

do {
    input = s.next();

    switch(input) {
    case "42":
        System.out.println("Success");
        break;
    default:
        System.out.println("Wrong answer!");
    }
} while(!input.equals("42"));

s.next()是一个阻塞调用(在本例中),这意味着在s.next()等待新用户输入时暂停程序执行。

如果没有该调用,while循环将一遍又一遍地评估input的相同值,向控制台发送垃圾邮件。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在每次迭代评估循环条件之前,您无法获得另一个要验证的输入。您需要使用扫描程序来收集循环条件可以验证的另一个输入。

 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"));