[Java] Вложенный оператор if + несколько команд System.out.print

Мне нужна помощь в выяснении, почему это не работает. Возможно ли, что это просто правило для вложенных операторов if-else или операторов if-else в целом, разрешающих использование только одного оператора System.out.print? Мне нужно, чтобы он выводил: "Вероятно, есть ремни безопасности. Вероятно, есть антиблокировочная система тормозов".

И так далее, как только он добирается до 2000 года.

Код:

public class CarFeatures {
   public static void main (String [] args) {
      int carYear = 0;

      carYear = 1990;

      if (carYear <= 1969) {
         System.out.println("Probably has few safety features.");

      }else{
         if (carYear >= 1970) {
            System.out.println("Probably has seat belts.");

         }else{
            if (carYear >= 1990) {
               System.out.println("Probably has seat belts.");
               System.out.println("Probably has anti-lock brakes.");

         }else{
             if (carYear >= 2000) {
               System.out.println("Probably has seat belts.");
               System.out.println("Probably has anti-lock brakes.");
               System.out.println("Probably has air bags.");

             }
            }
         }
      }
      return;
   }
}

3 ответа

Потому что это

 if (carYear >= 1970) {
        System.out.println("Probably has seat belts.");

     }else{

     }

1990>1970, так что просто напечатайте "Вероятно, есть ремни безопасности".

Имея if{...} else {...} else will not be entered into if theесли` верно

так удали их

 if {
    ...
 }else{
     if (carYear >= 1970) {
        System.out.println("Probably has seat belts.");

     }
     if (carYear >= 1990) {
           System.out.println("Probably has seat belts.");
           System.out.println("Probably has anti-lock brakes.");

     }
      if (carYear >= 2000) {
           System.out.println("Probably has seat belts.");
           System.out.println("Probably has anti-lock brakes.");
           System.out.println("Probably has air bags.");

      }
 }

Проблема возникает из-за 1990 Больше или равно 1990 но это также больше или равно 1970, Поскольку 1970 утверждение происходит первым в коде, оно никогда не достигает 1990 заявление.

Чтобы исправить это, в вашем коде могут происходить различные оптимизации:

  1. Вы можете объявить и инициализировать carYear в 1990 на одной линии.
  2. Используйте операторы if вместо операторов else на вложенном уровне, чтобы не дублировать операторы печати.

Попробуйте код ниже здесь!

public class CarFeatures {
  public static void main (String [] args) {
    int carYear = 1990;

    if (carYear <= 1969) {
      System.out.println("Probably has few safety features.");
    } else {
      if (carYear >= 1970) {
        System.out.println("Probably has seat belts.");
      } 
      if (carYear >= 1990) {
        System.out.println("Probably has anti-lock brakes.");
      }
      if (carYear >= 2000) {
        System.out.println("Probably has air bags.");
      }
    }
  }
}
Другие вопросы по тегам