Логические операторы (&&, ||, !)

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

Логические операторы Java работают с булевыми значениями (true/false) и чаще всего используются в if и while. В этом интерактивном тренажере Java онлайн вы закрепите три оператора: && (И), || (ИЛИ), ! (НЕ). Важно помнить про короткое замыкание: в выражениях с && и || правая часть может не вычисляться.

  • a && b — истина, если оба истинны.
  • a || b — истина, если хотя бы один истинный.
  • !a — инверсия.
Список тем

1. Вставьте && и || в условия

id: 40444_log_01_replace_and_or

Дополните фрагмент программы на Java, вставив логические операторы && и || в условия if/else. Код должен корректно решать, можно ли пропустить зрителя в зал: взрослого с билетом, подростка с родителем или по льготному правилу. Заполните все пропуски так, чтобы логика соответствовала комментариям и реальному смыслу проверок.

Заполните пропуски
int age = 16;
boolean hasTicket = true, withParent = true, isWeekend = false;
if (age >= 18 input1S hasTicket) {
    System.out.println("Вход без сопровождения");
} else if (age >= 12 input2S age < 18 input3S withParent) {
    System.out.println("Вход с родителем");
// льготное правило: с родителем ИЛИ в выходной
} else if (withParent input4S isWeekend) {
    System.out.println("Вход по льготному правилу");
} else {
    System.out.println("Вход запрещен");
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Инверсия условия через !

id: 40444_log_02_replace_not_operator

Дополните фрагмент программы на Java, в котором проверяется возможность входа по возрасту и наличию билета. Необходимо использовать инверсию условия с помощью логического оператора отрицания и круглых скобок, чтобы оператор if выполнялся только при разрешённом входе, а при нарушении хотя бы одного требования срабатывал блок else. Заполните пропуски так, чтобы код компилировался и логика проверки соответствовала комментариям.

Заполните пропуски
public class TicketChecker {
    public static void main(String[] args) {
        int age = 16;
        boolean hasTicket = true;

        // Нужно напечатать "Вход запрещён", если посетитель младше 18 или без билета.
        // Перепишите проверку так, чтобы if выполнялся только для разрешённого входа.
        if (input1S input2S age < 18 || !hasTicket input3S) {
            System.out.println("Добро пожаловать!");
        } else {
            System.out.println("Вход запрещён");
        }
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Ошибка: несуществующий оператор в Java

id: 40444_log_03_error_wrong_keyword_and

В этом фрагменте Java-кода в условии if используется несуществующий в языке оператор: вместо стандартного логического оператора применяется словесный аналог. Из-за этого программа не компилируется и не может проверить, можно ли разрешить доступ. Найдите строку с условием и исправьте её так, чтобы проверка возраста и наличия билета выполнялась корректно.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        boolean isAdult = true;
        boolean hasTicket = true;
        if (isAdult and hasTicket) {
            System.out.println("Access granted");
        } else {
            System.out.println("Access denied");
        }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Сломанное логическое выражение

id: 40444_log_04_error_broken_condition_syntax

В этом фрагменте Java-кода программа должна проверить, можно ли выдать доступ пользователю по возрасту и признаку регистрации. В условии оператора if используется логическое выражение с одной синтаксической ошибкой: нарушен формат записи логических операторов. Найдите строку с условием, исправьте ошибку в логическом выражении, чтобы код корректно компилировался и при выполнении выводил сообщение о предоставленном доступе.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        int age = 20;
        boolean isRegistered = true;
        if (age >= 18 && && isRegistered) {
            System.out.println("Access granted");
        }
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Соберите if с составным условием

id: 40444_log_05_build_from_parts_if_expression

Из предложенных строк соберите фрагмент Java-кода: объявите логические переменные isWeekend и isHoliday, затем создайте оператор if с составным условием isWeekend || isHoliday и внутри него выведите сообщение Можно не идти на работу. Лишние строки с другими переменными, условиями и текстами сообщений в решение включать не нужно.

Перетяните в правильном порядке строки из одного блока в другой
boolean isWeekend = true;
boolean isHoliday = false;
if (isWeekend || isHoliday) {
    System.out.println("Можно не идти на работу");
}
boolean isSick = true;
if (!isWeekend && !isHoliday) {
    System.out.println("Нужно идти на работу");
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Предскажите результат выражения

id: 40444_log_06_predict_result_boolean_expression

Проанализируйте фрагмент кода на Java с несколькими логическими переменными и составным выражением с операторами &&, || и !. Определите, какое булево значение будет выведено в консоль методом System.out.println, учитывая приоритет операторов и наличие скобок, и выберите правильный вариант ответа.

Выберите правильный вариант ответа
class Main {
    public static void main(String[] args) {
        boolean isAdult = true;
        boolean hasTicket = false;
        boolean withParent = true;

        System.out.println(isAdult && (hasTicket || withParent) && !false);
    }
}
Сообщения
Проверить
Показать подсказку

7. Найдите все логические операторы

id: 40444_log_07_click_target_operators

Перед вами фрагмент кода на Java с несколькими булевыми выражениями. Кликните по всем фрагментам кода, которые являются логическими операторами &&, || или !. Не выделяйте операторы присваивания, сравнения и другие символы, которые в этом фрагменте не относятся к логическим операторам.

Кликните по всем фрагментам, которые подходят под условие задания.
boolean canLogin(User user) {
    boolean isAdult {{=~|~t1}} user.getAge() {{>=~|~t2}} 18;
    boolean hasEmail {{=~|~t3}} user.getEmail() {{!=~|~t4}} null;
    boolean notBlocked {{=~|~t5}} {{!~|~t6}}user.isBlocked();

    if (isAdult {{&&~|~t7}} hasEmail {{&&~|~t8}} notBlocked {{||~|~t9}} user.isAdmin()) {
        return true;
    }
    return false;
}
Сообщения
Проверить
Показать подсказку

8. Сопоставьте оператор и смысл

id: 40444_log_08_compare_operator_meaning

В этом задании из тренажёра по Java для модуля об операторах вам нужно сопоставить выражения с логическими операторами и краткие формулировки их смысла. В левой колонке приведены фрагменты кода на Java, использующие &&, || и !, а также примеры с коротким замыканием. В правой колонке — словесные описания логического И, ИЛИ, НЕ и особенностей вычисления. Сопоставьте элементы левой колонки с соответствующими элементами правой.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
boolean result = a > 0 && b > 0;
boolean result = a > 0 || b > 0;
boolean result = !flag;
boolean ok = isValid(user) && sendEmail(user);
boolean dataReady = isCached() || loadFromDb();
Короткое замыкание для ИЛИ: правая часть не вычисляется, если левая часть истинна
Короткое замыкание для И: правая часть не вычисляется, если левая часть ложна
Логическое ИЛИ: выражение истинно, если хотя бы одна часть истинна
Логическое И: выражение истинно, только если обе части истинны
Логическое НЕ: инвертирует булево значение выражения
Сообщения
Проверить
Показать подсказку

9. Разложите выражения по операторам

id: 40444_log_09_sort_by_operator_used

Перед вами список логических выражений на Java. В каждом из них используется один из операторов: логическое И (&&), логическое ИЛИ (||) или логическое НЕ (!). Перетащите каждое выражение в контейнер с названием оператора, который в нём используется. Каждый элемент должен оказаться ровно в одной категории.

Перетяните элементы в соответствующие блоки
использует &&
использует ||
использует !
isAdult && hasTicket
x > 0 && x < 100
isReady && hasPermission
loggedIn && emailVerified
isWeekend || isHoliday
x == 0 || y == 0
hasAccess || isAdmin
hasBonus || hasDiscount
!isEmpty
!(x > 10)
!flag
!!isValid
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру