Упростите сложные инструкции if в java

#java #if-statement

#java #if-оператор

Вопрос:

Есть ли способ упростить приведенный ниже код, я могу объединить condition1 и condition2, но я хочу, чтобы инструкции else печатали разные сообщения для каждого шага.

 if(condition1){
    if(condition2){
        if(condition3){
            //do something
        }
    }
    else{
       //sout condition2 failed
    }
}
else{
    //sout condition1 failed
}
  

Комментарии:

1. объедините условие2 и условие3

Ответ №1:

самое простое, что я мог придумать, это

 if(condition1 amp;amp; condition2 amp;amp; condition3){
    //do something
}
else if(!condition1){
    //sout condition1 failed
}
else if(!condition2){
    //sout condition2 failed
}
  

Комментарии:

1. Это не та же логика, что и в коде вопроса. Если оба condition1 и condition2 имеют значение false, подойдет код вопроса sout condition1 failed , но подойдет и этот код sout condition2 failed

2. OP отредактировал Q., его начальный Q. соответствует этому ответу, следовательно, он является / был правильным. Мишефз может обновить свой ответ, чтобы соответствовать новым требованиям OP и редакции кода. @Andreas

3. @MS90 Тогда вопрос, должно быть, был обновлен еще до отправки этого ответа, потому что у вопроса нет истории редактирования, что происходит только в том случае, если он был отредактирован в течение первых 5 минут, а этот ответ был отправлен через 8 минут после вопроса.

Ответ №2:

Самое простое — поменять местами условия 1 и 2, чтобы это стало if-elseif конструкцией, которая не требует глубоко вложенных блоков:

 if (! condition1) {
    //sout condition1 failed
} else if (! condition2) {
    //sout condition2 failed
} else if (condition3) {
    //do something
}
  

Если вы также хотели else заблокировать для condition3 (отсутствует в коде вопроса), переверните условие 3 тоже.

 if (! condition1) {
    //sout condition1 failed
} else if (! condition2) {
    //sout condition2 failed
} else if (! condition3) {
    //sout condition3 failed
} else {
    //do something
}
  

Ответ №3:

условие слияния 2 и 3

 if(condition1){
    if(condition2 amp;amp; condition3){
       //do something
    }
    else if (!condition2){
       //sout condition2 failed
    }
}
else {
    //sout condition1 failed
}
  

Вы также можете сначала проверить условие false, например

 if(!condition1){

    //sout condition1 failed

} else if(!condition2){

    //sout condition2 failed

} else if(condition3){
  //do something
}
  

Комментарии:

1. Это не та же логика, что и в коде вопроса. Если условия 1 и 2 истинны, а условие 3 ложно, код вопроса ничего не сделает, но первый блок здесь подойдет sout condition2 failed , а второй блок подойдет do something

2. да, извините за неудобства

Ответ №4:

 if(condition1 amp;amp; condition2 amp;amp; condition3){
    //do something
 }

 String failed = !condition1? "condition1 failed":
                 !condition2? "condition2 failed" : "";

 System.out.println(failed);