Java计算多个布尔参数是否相等
我正在实现一个N元树(这里N=4),并希望在一个节点的所有四个子节点的布尔属性Java计算多个布尔参数是否相等,java,if-statement,conditional-statements,Java,If Statement,Conditional Statements,我正在实现一个N元树(这里N=4),并希望在一个节点的所有四个子节点的布尔属性val相等的情况下,加入一个逻辑来做一些事情,我尝试了: if (childOne.val == childTwo.val == childThree.val == childFour.val){ doSomthing(); } 但是,这不适用于我的测试用例,因此我必须将其更改为更明确和详细的: if (childOne.val == childTwo.val && childTwo.val
val
相等的情况下,加入一个逻辑来做一些事情,我尝试了:
if (childOne.val == childTwo.val == childThree.val == childFour.val){
doSomthing();
}
但是,这不适用于我的测试用例,因此我必须将其更改为更明确和详细的:
if (childOne.val == childTwo.val && childTwo.val == childThree.val && childThree.val == childFour.val){
doSomthing();
}
这一个有效。但是,我无法理解为什么第一次求值没有给出正确的答案。操作符是左关联的,因此您的第一个表达式如下所示,并添加了括号:
(((childOne.val == childTwo.val) == childThree.val) == childFour.val)
在这种情况下,上述情况为真,但并非所有四个值都相同:
- 孩子1和2是假的
- 孩子3和4是真的
Stream.of(childOne.val, childTwo.val, childThree.val, childFour.val)
.distinct().count() == 1
我建议您继续使用普通的
&&
,因为没有布尔流
,布尔值需要装箱。操作符是左关联的,因此您的第一个表达式看起来像这样,并添加了括号:
(((childOne.val == childTwo.val) == childThree.val) == childFour.val)
在这种情况下,上述情况为真,但并非所有四个值都相同:
- 孩子1和2是假的
- 孩子3和4是真的
Stream.of(childOne.val, childTwo.val, childThree.val, childFour.val)
.distinct().count() == 1
我建议你坚持使用普通的
&
,因为没有布尔流,布尔流需要装箱。a==b==c
equals(a==b==c
a==b==c
这是绝对正确的,谢谢!我用=
对它进行了错误的处理,对于列出的所有操作符来说,这似乎也是一个很好的关联性属性参考。这是绝对正确的,谢谢!我用=
对它进行了错误的处理,对于列出的所有操作符来说,这似乎也是一个很好的关联性属性参考。