2015-09-26 76 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倍。 寫的比較短,但太聰明瞭。 更好地保持您的原創。