2015-09-26 4 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 умножения. Короче писать, но это слишком умно. Лучше сохранить оригинал.

 Смежные вопросы

  • Нет связанных вопросов^_^