我要檢查,如果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',則它也成立。 –