2015-12-07 1 views
2

У меня есть следующий if-else блок:Может ли следующий блок IF-ELSE сжиматься в один оператор IF?

boolean condA = false, condB = true; 

if (!condA) { 
    // do WORK_C 
} else { 
    if (condB) { 
     // do WORK_C 
    } 
} 

Во время написания этого, я понял, что я делаю ту же работу в обоих матчах состоянии. Интересно, может ли это быть сжато дальше.

Я готов предоставить дополнительную информацию/контекст, если потребуется.

+0

Я думаю, что вы хотите сделать, как 'if (! CondA || condB)'. –

ответ

10

Если вы попытаетесь выразить словесное выражение условия, в соответствии с которым вы хотите выполнить WORK_C, вы скажете что-то по строкам «если condA ложно или если condB истинно». Это именно то, что вы хотите написать в своем if заявлении:

if (!condA || condB) { 
    // do WORK_C 
} 
+1

Спасибо, я придумал 'if (! CondA || condB)'. Но по какой-то причине я не мог этого оправдать. Еще раз спасибо за утвердительный ответ. – user3264740

5

Вы можете использовать логические операторы & &/|| вместо нескольких выражений if else. например

boolean condA = false, condB = true; 

if (!condA || condB) { 
    // do WORK_C 
} 

ИЛИ (||) оператор дает возможность иметь если заявление, чтобы быть правдой, если только один из нескольких условий не выполняется.

+1

Спасибо, я придумал 'if (! CondA || condB)'. Но по какой-то причине я не мог этого оправдать. Еще раз спасибо за утвердительный ответ. Единственная причина, по которой я решил отметить ответ Ишамаэля, - это то, что он опубликовал раньше. Печально, что нам нужно выбрать правильный ответ, так как вы оба отлично помогли. – user3264740