2015-09-26 79 views
1

我要检查,如果a等于一个值,b等于另一个,反之亦然XOR与价值观

例如

(a == 3 && b == 5) || (a == 5 && b == 3) 

我知道,如果它是boolean变量,我可以只是XOR它们。在检查两个值时如何实现相同的功能?

+1

'if(a + b == 8 && Math.abs(a-b)== 2)' – Tunaki

+0

可能有很多技巧来模仿这种情况,有些效率更高,效率更低。但是你想在这里模拟XOR的特点,为什么? – RealSkeptic

+1

@Tunaki如果存在'a == 3 + Integer.MIN_VALUE'和'b == 5 + Integer.MIN_VALUE',则它也成立。 –

回答

2

你的代码没有问题,也没有简单的方法。但是,您可以省略括号,因为&&的绑定强度大于||。请参阅Java operator order

0

考虑这两个等式:

a + b = 8    
a * b = 15   

如果你解决这个方程组, 原来只对同时满足这两个方程是(3, 5)(5, 3)值。 你可以使用这个算术重写复杂的布尔:

(a + b == 8 && a * b == 15) 

因此,而不是7个布尔条件, 现在你有3个布尔条件+ 1 +除了1倍。 写的比较短,但太聪明了。 更好地保持您的原创。