2015-08-10 2 views
0

Что будет в этом случае использовать условие if.Понимание, если условия - Java

A - if true, B or C must also be true; Pass 
    if false, B and C do not matter; Fail 
B - if true, A must also be true and C can be false or true 
    if false, A must be true and C must be true; Pass, else Fail 
C - if true, A must also be true and B can be false or true 
    if false, A must be true and B must be true; Pass, else Fail 

Я не уверен, как установить это. Вот что я думаю, что если может выглядеть следующим образом:

//Not sure if the "or" needs to be double or single bar. 
if(A && B | C){ 
    //pass  
}else{//fail} 

Сломанная обособленно код этой логики будет так:

if(A){ 
    if(B|C){ 
     //PASS 
    }else{//fail} 
}else{//fail} 
+0

ли или нет «или» является одинарной или двойной бар зависит от того, на каком языке вы программируете в – chepner

+0

Не знал, что обновит вопрос. – TJF

ответ

3

В зависимости от языка вы работаете с ним в основном || двойные бары.

Я думаю, что это будет работать:

if(A && (B || C)) { 
    pass; 
} else { 
    fail; 
} 

Это означает, что если А истинно и В или С истинно проходят, в противном случае не в состоянии.

+0

Когда я сказал, в зависимости от языка, вы еще не сказали, что язык еще ха-ха. –

+0

Я знаю, что я только что обновил его. Во всяком случае, не знал, что вы можете использовать «()» в условиях. Если да, то это ответ, спасибо. – TJF

+0

Мое удовольствие, если вам нужна дополнительная помощь, не бойтесь спросить. –

2

В Java разностные двухтактные и двухточечные операторы - это то, что двойные операторы (&& и ||) являются короткозамкнутыми (то есть, если результат выражения предварительно определен, правая сторона не будет выполнена).

например. в этих случаях foo() никогда не будет называться:

false && foo(); // evaluates to false 
true || foo(); // evaluates to true 

, но в этих случаях она:

false & foo(); // still evaluates to false 
true | foo(); // still evaluates to true 
+0

Я получаю, что проблема, с которой я столкнулась, заключалась в том, как работать в прошлом, если ложно, но если C истинно, пройдите. Использование круглых скобок должно решить эту проблему. Благодаря! – TJF

+0

Будет ли foo() вызываться для false || Foo(); – TJF

+1

@TJF Да, поскольку значение выражения зависит от возвращаемого значения 'foo'. – chepner

Смежные вопросы