我陷入了一个停滞的do-while循环中,需要使用do-while循环,直到用户输入三个正确字符串中的一个
我试过了
Scanner input = new Scanner(System.in);
String motor = "motor";
String mobil = "mobil";
String kosong = "";
String baru = "baru";
int tahun = Calendar.getInstance().get(Calendar.YEAR);
do {
inputVehicleType();
vehicleCondition = input.next();
}
while (!(vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong)));
System.out.println("SUCCED");
private static void inputVehicleType() {
System.out.println(Constant.HEADER);
System.out.println("Input Jenis Kendaraan Mobil/Motor --> (jenis [motor/mobil])");
titleFooter();
}使用该语法,它只检索(vehicleCondition.equals(马达)。我的预期结果是它可以检索(vehicleCondition.equals(马达),(vehicleCondition.equals(移动),(vehicleCondition.equals(kosong) )。
发布于 2019-06-27 15:25:46
如果删除多余的圆括号,可能更容易发现您使用的是while (!a || b || c)而不是while (!(a || b || c))。
do {
...
} while (!(vehicleCondition.equals(motor) ||
vehicleCondition.equals(mobil) ||
vehicleCondition.equals(kosong)));或者,等效地通过De Morgan's laws、while (!a && !b && !c)
do {
...
} while (!vehicleCondition.equals(motor) &&
!vehicleCondition.equals(mobil) &&
!vehicleCondition.equals(kosong));发布于 2019-06-27 15:28:29
您在while逻辑表达式中犯了一个错误
应该是:
while (!((vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));发布于 2019-06-27 15:25:31
正确的条件应该是:
while (!(vehicleCondition.equals(motor) ||
vehicleCondition.equals(mobil) ||
vehicleCondition.equals(kosong)));也就是说,只要vehicleCondition不等于3个预期值之一,你就应该留在循环中。
https://stackoverflow.com/questions/56785978
复制相似问题