#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);