【问题标题】:consider evaluate all third if second true如果第二个为真,则考虑评估所有第三个
【发布时间】:2017-03-02 10:57:05
【问题描述】:

想想都累了 :)

在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 有效吗? – 布拉迪姆斯

也许是我——但你在问什么? – 满载鳗鱼的气垫船

要考虑的示例:

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

【问题讨论】:

  • a &amp;&amp; !b 工作吗?
  • 三元运算符可能难以理解,尤其是在您寻求逻辑帮助时。你能举一个使用if语句的例子吗?

标签: java operators conditional-statements


【解决方案1】:

我认为这应该可行:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2014-06-27
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多