Menu
Coddy logo textTech

Логические операторы. Часть 4

Часть раздела Основы путешествия по Java на Coddy. Урок 26 из 73.

Закон де Моргана — это правило, которое помогает нам упрощать выражения с NOT. При работе с логическими выражениями иногда нам нужно упростить или перестроить их.

Когда перед двумя условиями, объединёнными с помощью and, стоит not, его можно разделить на две отдельные части. and превращается в or, и каждая часть получает собственный not:

!(A && B) — это то же самое, что (!A) || (!B)

Например:

// Давайте проверим, является ли число НЕ (между 1 и 10)
int number = 15;

// Эти два выражения эквивалентны:
boolean result1 = !(number >= 1 && number <= 10);
boolean result2 = !(number >= 1) || !(number <= 10);

System.out.println(result1);  // true
System.out.println(result2);  // true

Верно и обратное: !(A || B) — это то же самое, что и (!A) && (!B)

Например:

// Проверка, является ли человек НЕ (студентом или работающим)
boolean isStudent = false;
boolean isEmployed = false;

// Эти два выражения эквивалентны:
boolean result1 = !(isStudent || isEmployed);
boolean result2 = !(isStudent) && !(isEmployed);

System.out.println(result1);  // true
System.out.println(result2);  // true
challenge icon

Задание

Новичок

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

Инициализируйте следующие переменные:

  • hasLicense со значением true
  • hasSpace со значением false
  • hasExperience со значением true

Запишите следующие логические выражения, чтобы определить, выполняется ли одно из условий:

  • canSellRegularPet: клиенту нужна лицензия ИЛИ опыт, И у него должно быть место
  • canSellExoticPet: клиенту нужны И лицензия, И опыт, И у него должно быть место
  • cannotSellAnyPet: у клиента НЕТ лицензии И НЕТ опыта, ИЛИ у него НЕТ места
  • result: canSellRegularPet ИЛИ canSellExoticPet ИЛИ cannotSellAnyPet

Совет: Записывайте условие, описанное требованием, а не значение, которое случайно хранится в переменной. "Must have space" → hasSpace; "has NO space" → !hasSpace. Используйте ! только тогда, когда требование является противоположностью того, что указано в имени переменной, например "has NO license" → !hasLicense.

Попробуйте сами

public class Main {
    public static void main(String[] args) {
        // Инициализировать переменные
        

        // Вычислить условия
        boolean canSellRegularPet = 
        boolean canSellExoticPet = 
        boolean cannotSellAnyPet =
        boolean result =

        // Не удаляйте строки ниже
        System.out.println("Can sell regular pet: " + canSellRegularPet);
        System.out.println("Can sell exotic pet: " + canSellExoticPet);
        System.out.println("Cannot sell any pet: " + cannotSellAnyPet);
        System.out.println("Result: " + result);
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Java