为了账号安全,请及时绑定邮箱和手机立即绑定

do-while 循环有 3 个条件

do-while 循环有 3 个条件

叮当猫咪 2023-02-23 16:11:38
我陷入了 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()));


查看完整回答
反对 回复 2023-02-23
?
萧十郎

TA贡献1815条经验 获得超13个赞

我认为您的代码中有一点括号错误。您需要在 not 运算符周围添加一个额外的括号。你的情况应该是


while (!(

  (vehicleCondition.equals(motor)) ||

  (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))

));


查看完整回答
反对 回复 2023-02-23
?
收到一只叮咚

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


查看完整回答
反对 回复 2023-02-23
?
largeQ

TA贡献2039条经验 获得超7个赞

您在 while 逻辑表达式中犯了一个错误

应该:

while (!((vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));



查看完整回答
反对 回复 2023-02-23
?
当年话下

TA贡献1890条经验 获得超9个赞

正确的条件是:

while (!(vehicleCondition.equals(motor) || 
         vehicleCondition.equals(mobil) || 
         vehicleCondition.equals(kosong)));

vehicleCondition也就是说,只要不等于 3 个预期值之一,您就应该留在循环中。


查看完整回答
反对 回复 2023-02-23
  • 5 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信