[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
заявление.
Чтобы исправить это, в вашем коде могут происходить различные оптимизации:
- Вы можете объявить и инициализировать
carYear
в1990
на одной линии. - Используйте операторы 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.");
}
}
}
}