我有条件的if语句
if ((a && (b || c)) ||
(b && (a || c))) {
}
基本上,我想要实现的是,我只能有一个选项为true,但两个选项都不行!
可以简化一下,对我来说看起来多余! 还是应该将其提取为函数?
编辑
if (a && !b && !c) // process a
if (b && !a && !c) // process b
if (c && !a && !b) // process c
if (!a && !b && c!) // none present exception
else {} // more than one case exception
答案 0 :(得分:5)
是的,它可能更简单,因为a && b
会得到与b && a
相同的结果,这将绰绰有余:
if (a && b || c) {
}
注意:原始问题完全不同于 ,并要求简化以下表达式:
if ((a && b || c) ||
(b && a || c)) {
}
答案 1 :(得分:2)
在注释和编辑之后,每一行都是上一行的发展:
(a && (b || c)) || (b && (a || c))
((a && b) || (a && c)) || ((a && b) || (b && c))
(a && b) || (a && c) || (a && b) || (b && c)
您有一个重复项,因此可以将其更改为:(这些行等于)
(a && b) || (a && c) || (b && c)
(a && (b ||c)) || (b&&c)
答案 2 :(得分:1)
MEMOIZE
答案 3 :(得分:0)
if (c || (a && b) {
...
}
两个大条件相同...´&&`是可交换的