Най-ефективният и лесен начин да се гарантира, че само едно условие е вярно сред няколко условия, е като използвате изключителен или (XOR) оператор. Операцията XOR връща true, ако някой от операндите е true, но не и двата. В Java можем да използваме ^ (карет) символ за извършване на операцията XOR.
public class OnlyOneConditionIsTrue { public static void main(String[] args) { boolean condition1 = true; boolean condition2 = false; boolean condition3 = true; boolean onlyOneIsTrue = condition1 ^ condition2 ^ condition3; System.out.println("Only One Condition Is True: " + onlyOneIsTrue); } }
Кодовият фрагмент по-горе демонстрира оператора XOR в действие. Нека преминем през кода стъпка по стъпка:
1. Декларираме клас с име OnlyOneConditionIsTrue.
2. В основния метод дефинираме три булеви условия с различни стойности.
3. След това използваме оператора XOR, за да проверим дали само едно от тези условия е вярно.
4. Накрая отпечатваме резултата на конзолата.
Сега нека проучим някои библиотеки и функции, свързани с нашия проблем.
Булеви класове и методи на Java
- java.lang.Boolean class е обвиващ клас, който обвива булева стойност. Този клас съдържа различни полезни методи за манипулиране и работа с булеви стойности.
Някои от често използваните методи са:
- Boolean.parseBoolean(String s): Анализира низ като булева стойност, връщайки true, ако низът е „true“ (без значение за малки и големи букви) и false в противен случай.
- Boolean.valueOf(булев b): Връща съответния булев екземпляр, като кешира екземплярите за стойности true и false.
- Boolean.logicalXor(булев a, булев b): Връща резултата от логическа операция XOR между две булеви стойности.
Можем да използваме Boolean.logicalXor метод за постигане на същия резултат като нашия предишен пример:
boolean onlyOneIsTrue = Boolean.logicalXor(condition1, Boolean.logicalXor(condition2, condition3));
Apache Commons Lang – BooleanUtils
В допълнение към вградените Java библиотеки, библиотеки на трети страни, като напр Apache Commons Lang предоставя допълнителни помощни програми и функции за работа с булеви стойности. The BooleanUtils е част от библиотеката commons-lang3 и предлага няколко полезни метода за булеви и булеви обекти.
Някои от методите включват:
- BooleanUtils.xor(булев [] масив): Извършва XOR в масив от булеви стойности.
- BooleanUtils.negate(булев бул): Отрича зададената булева стойност.
- BooleanUtils.toBoolean(int стойност): Преобразува целочислена стойност в съответната булева стойност.
За да използвате BooleanUtils.xor метод от Apache Commons Lang, добавете следната зависимост към вашия проект:
Maven:
„„
„„
gradle:
„„
изпълнение 'org.apache.commons:commons-lang3:3.12.0'
„„
След това можете да използвате xor метод като този:
import org.apache.commons.lang3.BooleanUtils; // ... boolean[] conditions = {condition1, condition2, condition3}; boolean onlyOneIsTrue = BooleanUtils.xor(conditions);
В обобщение, гарантирането, че само едно условие е вярно сред няколко условия, е основно умение за всеки разработчик на Java. Като използваме оператора XOR, вградения булев клас на Java или библиотеки на трети страни като Apache Commons Lang, можем ефективно да постигнем тази цел и да създадем по-стабилен код.