Логический оператор, который выдает true из двух похожих значений

#java #boolean #boolean-logic

#java #логическое #логическая логика

Вопрос:

Учитывая две логические переменные x и y, оператор должен быть таким, чтобы

 boolean getResult(boolean x, boolean y) {
    return x op y;
}
  

следующие утверждения проходят

 assertEquals(getResult(true, true), true);
assertEquals(getResult(false, false), true);
assertEquals(getResult(true, false), false);
assertEquals(getResult(false, true), false);
  

Есть ли какой-либо оператор для этого?

Редактировать.

Извините, я пропустил упоминание оператора, отличного от проверки равенства. Я ищу какую-то операцию, которая может дать комбинированный результат, подобный тому, который мы имеем в общих логических элементах. Я просто хочу знать, возможно ли это или нет. Если возможно, какова операция.

Комментарии:

1. Я в замешательстве, вы хотите, чтобы он возвращал true или false случайным образом?

2. @Luke это совсем не случайно. Возвращает только true в том случае, если оба параметра одинаковы, и false если они не совпадают. Полностью детерминированный.

3. ДА. Я думаю, что я пропустил слова, отличные от проверки равенства. Какая-то операция, которая может дать комбинированный результат, подобный тому, который мы имеем в общих логических элементах.

Ответ №1:

Есть ли какой-либо оператор для этого?

Да, оператор для этого может быть == .

Проверьте объяснение, приведенное ниже:

 true == true => true
false == false => true
true == false => false
false == true => false
  

ДЕМОНСТРАЦИЯ:

 public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(getResult(true, true));
        System.out.println(getResult(false, false));
        System.out.println(getResult(true, false));
        System.out.println(getResult(false, true));
    }

    static boolean getResult(boolean x, boolean y) {
        return x == y;
    }
}
  

Вывод:

 true
true
false
false
  

В качестве альтернативы, вы можете получить тот же результат, отменив bitwise exclusive OR операцию, как показано ниже:

 public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(getResult(true, true));
        System.out.println(getResult(false, false));
        System.out.println(getResult(true, false));
        System.out.println(getResult(false, true));
    }

    static boolean getResult(boolean x, boolean y) {
        return !(x ^ y);
    }
}
  

Вывод:

 true
true
false
false
  

Комментарии:

1. извините, но я отредактировал сообщение, чтобы включить недостающую деталь.

2. @xploreraj — Я добавил альтернативный способ получить тот же результат.

Ответ №2:

Вам просто нужно проверить, равны ли два значения.

 boolean getResult(boolean x, boolean y) {
 return x === y;
}
  

Комментарии:

1.извините, но я отредактировал сообщение, чтобы включить недостающую деталь.

2. хорошо 🙂 Вы можете сделать это, используя альтернативный способ, упомянутый в ответе @Arvind