Логические операторы. Часть 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Задание
НовичокВы помогаете зоомагазину создать систему, которая определяет, можно ли продать питомца клиенту.
Инициализируйте следующие переменные:
hasLicenseсо значениемtruehasSpaceсо значениемfalsehasExperienceсо значением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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияИнкремент/декрементПостфиксный инкремент/декрементСокращённые арифметические операцииОператоры сравненияСравнение строк7Основы ввода-вывода
Методы System.outФорматирование выводаКласс ScannerПовторение — до 120Повторение — истина или ложь5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 43Переменные. Часть 2
КонстантыСоглашения об именованииПовторение — инициализация переменныхПриведение типов. Часть 1Приведение типов. Часть 26Принятие решений
Оператор IfIf — ElseОператор SwitchТернарный операторПовторение: If — ElseВложенный If — Else9Циклы
Цикл for. Часть 1Цикл whileЦикл do whileBreakContinueЦикл for. Часть 2Вложенный циклБесконечный циклПовторение — динамический ввод12Итерация по массивам
Использование цикла forРасширенный цикл forРаспространённые операции с массивамиПотренируйтесь самостоятельно: Онлайн-компилятор Java