我是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");
然而,当选择有效时,它会不断重复“这是一个有效的移动”,反之亦然,当它无效时。有人能帮忙吗?
答案 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"));