我陷入了 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(motor)。我的预期结果是它可以检索 (vehicleCondition.equals(motor), (vehicleCondition.equals(mobil), (vehicleCondition.equals(kosong)。
5 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
创建一个方法来检查条件:
private static boolean isValidVehiculeCondition(String vc) {
return !Arrays.asList("motor", "mobil", "baru").contains(vc.toLowerCase());
}然后在它返回 true 时循环(即:输入无效)
do {
inputVehicleType();
} while(isNotValidVehiculeCondition(input.next()));
萧十郎
TA贡献1815条经验 获得超13个赞
我认为您的代码中有一点括号错误。您需要在 not 运算符周围添加一个额外的括号。你的情况应该是
while (!(
(vehicleCondition.equals(motor)) ||
(vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))
));
收到一只叮咚
TA贡献1821条经验 获得超5个赞
如果您删除多余的括号,可能更容易发现您拥有的while (!a || b || c)是while (!(a || b || c)).
do {
...
} while (!(vehicleCondition.equals(motor) ||
vehicleCondition.equals(mobil) ||
vehicleCondition.equals(kosong)));或者,等效地通过De Morgan 定律:while (!a && !b && !c)
do {
...
} while (!vehicleCondition.equals(motor) &&
!vehicleCondition.equals(mobil) &&
!vehicleCondition.equals(kosong));
largeQ
TA贡献2039条经验 获得超8个赞
您在 while 逻辑表达式中犯了一个错误
应该:
while (!((vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));
当年话下
TA贡献1890条经验 获得超9个赞
正确的条件是:
while (!(vehicleCondition.equals(motor) || vehicleCondition.equals(mobil) || vehicleCondition.equals(kosong)));
vehicleCondition也就是说,只要不等于 3 个预期值之一,您就应该留在循环中。
添加回答
举报
0/150
提交
取消
