Menu
Coddy logo textTech

Logical Operators Part 4

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

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

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

!(A && B) эквивалентно (!A) || (!B)

Например:

// Let's check if a number is NOT (between 1 and 10)
int number = 15;

// These two expressions are equivalent:
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)

Например:

// Checking if a person is NOT (a student or employed)
boolean isStudent = false;
boolean isEmployed = false;

// These two expressions are equivalent:
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 OR canSellExoticPet OR cannotSellAnyPet

Подсказка: Используйте значения переменных напрямую в своих выражениях. Например, hasSpace равно false, поэтому «должен иметь место» означает, что вы используете hasSpace как есть (без !) — переменная уже содержит реальное значение. Используйте ! только когда условие требует противоположного тому, что содержит переменная, например «НЕТ лицензии» → !hasLicense.

Шпаргалка

Закон де Моргана помогает упрощать логические выражения с операторами НЕ:

!(A && B) эквивалентно (!A) || (!B)

!(A || B) эквивалентно (!A) && (!B)

Пример с И:

int number = 15;
boolean result1 = !(number >= 1 && number <= 10);
boolean result2 = !(number >= 1) || !(number <= 10);
// Both expressions are equivalent

Пример с ИЛИ:

boolean isStudent = false;
boolean isEmployed = false;
boolean result1 = !(isStudent || isEmployed);
boolean result2 = !(isStudent) && !(isEmployed);
// Both expressions are equivalent

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

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

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

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