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Задание
НовичокВы помогаете зоомагазину создать систему, чтобы определить, могут ли они продать питомца клиенту.
Инициализируйте следующие переменные:
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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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