Java 最小代码,缩短表达式

Java 最小代码,缩短表达式,java,operators,comparator,Java,Operators,Comparator,给出了以下参数: 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) || ( ! a && b) ) {
}  
你可以用

if ( a!=b) {
} 

你可以用

if(a==b){}  


第一个条件与第二个条件相同,第三个条件是其他条件的否定,所以我们有

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  |

浏览每一行,并在列中写出z1的效果。如果可能的话,这将使您能够轻松确定发生了什么以及如何缩短时间。

作业?你有a和b的值,所以你可以计算出哪个if子句是真的,因此z1会发生什么。如果你想要所有a/b的简化版本,那么我不知道你为什么给出值…天哪!我没看见那个人来了!代码应该对给定的a,b,c做同样的处理,所以第一个和第二个条件不一样?做一个真值表如果你不相信我,这两个条件都是一样的,无论a或b是什么。。。
z1 += 118
  a  |  b  |  z1
------------------
  t  |  t  |
  t  |  f  |
  f  |  t  |
  f  |  f  |