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Задание
НовичокВы помогаете зоомагазину создать систему для определения, могут ли они продать питомца клиенту.
Инициализируйте следующие переменные:
hasLicenseсо значениемtruehasSpaceсо значениемfalsehasExperienceсо значениемtrue
Напишите следующие логические выражения для определения:
canSellRegularPet: Клиент нуждается ЛИБО в лицензии, ЛИБО в опыте, И должен иметь местоcanSellExoticPet: Клиент нуждается И в лицензии, И в опыте, И должен иметь местоcannotSellAnyPet: У клиента НЕТ лицензии И НЕТ опыта, ИЛИ НЕТ местаresult:canSellRegularPetORcanSellExoticPetORcannotSellAnyPet
Подсказка: Используйте значения переменных напрямую в своих выражениях. Например, 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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Operators Part 1
Arithmetic OperatorsModulo OperatorIncrement/DecrementPost Increment/DecrementArithmetic ShortcutsComparison OperatorsString Comparison5Operators Part 2
Logical Operators Part 1Logical Operators Part 2Recap - Simple LogicLogical Operators Part 3Logical Operators Part 43Variables Part 2
ConstantsNaming ConventionsRecap - Initialize VariablesType Casting Part 1Type Casting Part 26Decision Making
If StatementIf - ElseSwitch StatementTernary OperatorRecap - If ElseNested If - Else