【问题标题】:Java evaluate if multiple boolean parameters are equalJava评估多个布尔参数是否相等
【发布时间】:2019-01-07 06:50:54
【问题描述】:

我正在实现一个 N-nary 树(这里 N=4),如果一个节点的所有四个子节点的布尔属性 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();
}

这一个有效。但是我无法理解为什么第一次评估没有给我正确的答案。

【问题讨论】:

  • a == b == c 等于 (a == b) == c

标签: java if-statement conditional-statements


【解决方案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

我建议您坚持使用普通的旧 &&,因为没有 BooleanStream 并且布尔值需要装箱。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 2018-09-27
  • 2011-09-15
  • 2016-10-12
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多