我的代码中有这个if-condition
:
if (a||a&&!b){
// do some stuff
}
来自我的
junit test
的初始值:boolean a=true, b = true;
正如我稍后认识到的,该语句可以简化为:
if (a&&b)
变为绿色:
Assert.assertTrue(a||a&&!b == a&&b);
我的问题是现在。是否有任何方法,工具,函数,库等来检查
boolean expression
是否存在简化?谢谢你的帮助?
最佳答案
a || a && !b
不等于
a && b
它等于
a
。我想在JUnit测试中,您为
a
和b
的值使用了特定的值组合,结果匹配,但这并不意味着这些表达式是等效的,但实际上并不相同。一种说服自己的快速方法是检查组合a = true, b = false;
在所有
true
情况下,原始表达式显然会产生a == true
,但是在false
时,第二个表达式将产生b == false
。至于等价于
a
的形式证明,请展开a == a && (b || !b)
== a && b || a && !b
插入您的原始表达式:
a || a && !b == a && b || a && !b || a && !b
== a && b || a && !b
== a
关于java - 简化条件 boolean 表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22199180/