给出以下参数:
boolean a = true ;
boolean b = false ;
boolean c = true ;
我想拥有此版本的最少代码:
if ( ( a && ! b) || ( ! a && b) ) {
z1 += 99 ;
}
if (a ^ b) {
z1 += 19 ;
}
if ( ( a && b) || ( ! a && ! b) ) {
z1 += 118;
}
需要修改什么?
答案 0 :(得分:9)
第一个条件和第二个条件相同,第三个条件是对其他条件的否定,所以我们有
if (a ^ b) {
z1 += 99 + 19 // = 118
} else {
z1 += 118
}
我们可以再次缩短,无论a或b是什么,z1增加118,所以我们只有
z1 += 118
答案 1 :(得分:2)
如果您将来需要弄清楚这样的事情,那么您可能想尝试编写一个表(我认为它称为真值表,但这里有一些更具数学意义的人可以纠正我),显示所有可能的输入和他们的各自的结果。编写完表后,您应该能够快速识别整体逻辑,并可能简化它。
对于上述内容,表格可能如下所示;
a | b | z1
------------------
t | t |
t | f |
f | t |
f | f |
遍历每一行并在列中写下z1的效果。如果可能,这应该可以让您轻松确定发生了什么以及如何缩短它。
答案 2 :(得分:1)
if ( ( a && ! b) || ( ! a && b) ) {
}
你可以使用
if ( a!=b) {
}
if ( ( a && b) || ( ! a && ! b) ) {}
你可以使用
if(a==b){}
if (a ^ b) {}
可以取而代之的