我要检查,如果a
等于一个值,b
等于另一个,反之亦然XOR与价值观
例如
(a == 3 && b == 5) || (a == 5 && b == 3)
我知道,如果它是boolean
变量,我可以只是XOR它们。在检查两个值时如何实现相同的功能?
我要检查,如果a
等于一个值,b
等于另一个,反之亦然XOR与价值观
例如
(a == 3 && b == 5) || (a == 5 && b == 3)
我知道,如果它是boolean
变量,我可以只是XOR它们。在检查两个值时如何实现相同的功能?
你的代码没有问题,也没有简单的方法。但是,您可以省略括号,因为&&
的绑定强度大于||
。请参阅Java operator order。
考虑这两个等式:
a + b = 8 a * b = 15
如果你解决这个方程组, 原来只对同时满足这两个方程是(3, 5)
和(5, 3)
值。 你可以使用这个算术重写复杂的布尔:
(a + b == 8 && a * b == 15)
因此,而不是7个布尔条件, 现在你有3个布尔条件+ 1 +除了1倍。 写的比较短,但太聪明了。 更好地保持您的原创。
'if(a + b == 8 && Math.abs(a-b)== 2)' – Tunaki
可能有很多技巧来模仿这种情况,有些效率更高,效率更低。但是你想在这里模拟XOR的特点,为什么? – RealSkeptic
@Tunaki如果存在'a == 3 + Integer.MIN_VALUE'和'b == 5 + Integer.MIN_VALUE',则它也成立。 –