Menu
Coddy logo textTech

Logical Operators Part 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Проверьте себя

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

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