我陷入了 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条经验 获得超4个赞
如果您删除多余的括号,可能更容易发现您拥有的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条经验 获得超7个赞
您在 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
提交
取消