考虑评估所有第三个,如果第二个真实

时间:2016-10-20 12:28:32

标签: java operators conditional-statements

我厌倦了思考:)

在java中是否有任何简单的解决方案?

A B | =         XOR -> NO 
--------        AND -> NO
0 1 | 0         OR -> NO
0 0 | 0         
1 1 | 0
1 0 | 1

这来自

             condition 1       if condition 2    take condition 3
            evaluated to       evaluated to         to consider 
               true               true              

 return         a        &&       if(b)      &&              c           

                                  else  only a   


 // i can make it like this  
return (a && b) ? a && b && c : a; 
// then simplifying 
return b ? a && c : a;

但是,如果是声明,我需要制作解决方案/计算&在右边替换

或者可能有更简单的方法来写这个条件?

&&& !b工作? - bradimus

也许是我 - 但你问的是什么? - 充气鳗鱼的气垫船

要考虑的示例:

public boolean isRequestInQue(Request<User> requestToCheck, 
                              boolean checkCallerAlive) {
    int id = requestToCheck.getId();
    Request<User> requestInQue = _stateCallerRequestList.get(id);
    return requestInQue != null 
               ? checkCallerAlive 
               ? requestToCheck.equals(requestInQue) 
               && requestInQue.isCallerAlive() 
               : requestToCheck.equals(requestInQue) 
               : false;
}

三元运算符可能很难遵循,特别是如果您要求逻辑帮助。你能用if语句给出一个例子吗? - 戴夫

if(requestInQue!=null)
   if(checkCallerAlive)
      if(requestToCheck.equals(requestInQue))
         if(requestInQue.isCallerAlive())
            return true;
   else if(requestToCheck.equals(requestInQue)
           return true;  
return false;

最终基于戴夫的回答

true && (!false || true) = true
true && (!true || true) = true
true && (!true || false) = false
true && (!false || false) = true

public boolean checkWithCifB(boolean a, boolean b, boolean c) {
    return a && (!b || c);
}

1 个答案:

答案 0 :(得分:1)

我认为这应该有效:

return requestInQue != null && requestToCheck.equals(requestInQue) && 
       (!checkCallerActive || requestInQue.isCallerAlive());