下列参数给出:最少的代码,缩短表达
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
if ((a && ! b) || (! a && b)) {
}
可以使用
if (a!=b) {
}
if ((a && b) || (! a && ! b)) {}
可以使用
if(a==b){}
if (a^b) {}
是在它的位置确定
如果你需要弄清楚这样的事情在未来,那么你可能想尝试写一个表(我认为它称为真值表,但有些在这里更具数学意义的人可能会纠正我)显示所有可能的英寸投入和他们各自的结果。一旦写完表格,您应该能够快速识别整体逻辑并可能将其简化。
对于上面的表格可能看起来像这样;
a | b | z1
------------------
t | t |
t | f |
f | t |
f | f |
遍历每一行并在列中写入z1的效果。如果可能的话,这应该可以让您轻松确定发生了什么以及如何缩短它。
闻起来像作业... – 2010-10-20 09:20:40
作业?你有a和b的值,所以你可以计算出哪些if子句是真的,因此z1会发生什么。如果你想要所有a/b的简化版本,那么我不知道你为什么给出的值... – 2010-10-20 09:20:58