首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有3个条件的do-while循环

具有3个条件的do-while循环
EN

Stack Overflow用户
提问于 2019-06-27 15:22:13
回答 5查看 113关注 0票数 1

我陷入了一个停滞的do-while循环中,需要使用do-while循环,直到用户输入三个正确字符串中的一个

我试过了

代码语言:javascript
复制
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) )。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-06-27 15:25:46

如果删除多余的圆括号,可能更容易发现您使用的是while (!a || b || c)而不是while (!(a || b || c))

代码语言:javascript
复制
do {
    ...
} while (!(vehicleCondition.equals(motor) ||
           vehicleCondition.equals(mobil) ||
           vehicleCondition.equals(kosong)));

或者,等效地通过De Morgan's lawswhile (!a && !b && !c)

代码语言:javascript
复制
do {
    ...
} while (!vehicleCondition.equals(motor) &&
         !vehicleCondition.equals(mobil) &&
         !vehicleCondition.equals(kosong));
票数 5
EN

Stack Overflow用户

发布于 2019-06-27 15:28:29

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

应该是:

代码语言:javascript
复制
while (!((vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));
票数 3
EN

Stack Overflow用户

发布于 2019-06-27 15:25:31

正确的条件应该是:

代码语言:javascript
复制
while (!(vehicleCondition.equals(motor) || 
         vehicleCondition.equals(mobil) || 
         vehicleCondition.equals(kosong)));

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56785978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档