猿问

do-while 循环有 3 个条件

我陷入了 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)。


叮当猫咪
浏览 163回答 5
5回答

明月笑刀无情

创建一个方法来检查条件:private static boolean isValidVehiculeCondition(String vc) {     return !Arrays.asList("motor", "mobil", "baru").contains(vc.toLowerCase()); }然后在它返回 true 时循环(即:输入无效)do {     inputVehicleType(); } while(isNotValidVehiculeCondition(input.next()));

萧十郎

我认为您的代码中有一点括号错误。您需要在 not 运算符周围添加一个额外的括号。你的情况应该是while (!(  (vehicleCondition.equals(motor)) ||  (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));

收到一只叮咚

如果您删除多余的括号,可能更容易发现您拥有的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

您在 while 逻辑表达式中犯了一个错误应该:while (!((vehicleCondition.equals(motor)) || (vehicleCondition.equals(mobil)) || (vehicleCondition.equals(kosong))));

当年话下

正确的条件是:while (!(vehicleCondition.equals(motor) ||           vehicleCondition.equals(mobil) ||           vehicleCondition.equals(kosong)));vehicleCondition也就是说,只要不等于 3 个预期值之一,您就应该留在循环中。
随时随地看视频慕课网APP

相关分类

Java
我要回答