给出以下参数:
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;
}
需要修改什么?
给出以下参数:
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;
}
需要修改什么?
第一个条件与第二个相同,第三个是其他的否定,所以我们有
if (a ^ b) {
z1 += 99 + 19 // = 118
} else {
z1 += 118
}
我们可以再次缩短它,无论 a 或 b 是什么,z1 都增加了 118,所以我们只有
z1 += 118
如果您将来需要弄清楚这样的事情,那么您可能想尝试编写一个表格(我认为它被称为真值表,但这里的一些更具数学头脑的人可能会纠正我)显示所有可能的输入及其各自的结果。一旦您编写了表格,您应该能够快速识别整体逻辑并可能简化它。
对于上面的表格,可能看起来像这样;
a | b | z1
------------------
t | t |
t | f |
f | t |
f | f |
Go through each row and write the effects of z1 in the column. This should allow you to easily determine what's going on and how to shorten it, if possible.
if ( ( a && ! b) || ( ! a && b) ) {
}
您可以使用
if ( a!=b) {
}
if ( ( a && b) || ( ! a && ! b) ) {}
您可以使用
if(a==b){}
if (a ^ b) {}
可以代替它