Java 在3个条件下执行循环

Java 在3个条件下执行循环,java,while-loop,do-while,Java,While Loop,Do While,我一直在使用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(Cale

我一直在使用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)。
我的预期结果是,它可以检索(车辆条件.equals(motor),(车辆条件.equals(mobil),(车辆条件.equals(kosong)。

正确的条件是:

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

i、 e.只要
车辆状况
不等于3个期望值中的一个,您就应该留在环路中。

正确的条件是:

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

i、 e.只要
vehicleCondition
不等于3个期望值中的一个,您就应该留在循环中。

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

或者,当(!a&&!b&&!c)
时,等效地通过,


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

或者,当(!a&&!b&&!c)
时,等效地通过,


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

应该是:

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

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

应该是:

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

制定检查条件的方法:

private static boolean isValidVehiculeCondition(String vc) {
    return !Arrays.asList("motor", "mobil", "baru").contains(vc.toLowerCase());
}
然后在返回true时循环(即:输入无效)


制定检查条件的方法:

private static boolean isValidVehiculeCondition(String vc) {
    return !Arrays.asList("motor", "mobil", "baru").contains(vc.toLowerCase());
}
然后在返回true时循环(即:输入无效)


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

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

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

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