Вложенные условия if

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

Тренажер по Java

Иногда одной проверки недостаточно, и логика программы требует уточнения условий. В таких случаях используются вложенные условия if. Это конструкция, когда один оператор if находится внутри блока другого.

Представьте систему авторизации: сначала мы проверяем, существует ли пользователь, и только если это так (истина), проверяем правильность пароля. Визуально код смещается вправо, образуя «лесенку».

Эти задания направлены на отработку сложной логики. Вы научитесь комбинировать проверки, понимать порядок их выполнения и избегать ошибок в структуре кода. Интерактивный формат поможет разобраться, как программа проходит через несколько уровней проверок.

Список тем

1. Найти вложенное условие

id: 40449_nested_if_logic_click

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

Кликните по всем фрагментам, которые подходят под условие задания.
boolean loggedIn = user != null;
boolean isAdmin = loggedIn && user.isAdmin();

{{if (loggedIn) {~|~t1}}
    {{if (isAdmin) {~|~t2}}
        System.out.println("Admin panel");
    }
}

{{if (cartTotal > 1000) {~|~t3}}
    System.out.println("Discount applied");
}
Сообщения
Проверить
Показать подсказку

2. Результат вложенной проверки

id: 40449_predict_nested_output

Проанализируйте приведенный код на Java с вложенными условными конструкциями if-else. Учитывая заданные значения переменных, определите, какое сообщение будет выведено в результате выполнения программы. Обратите внимание на порядок проверки условий и область видимости переменных.

Выберите правильный вариант ответа
public class Main {
    public static void main(String[] args) {
        int temperature = 25;
        boolean isSunny = false;
        boolean hasUmbrella = true;
        
        if (temperature > 20) {
            if (isSunny) {
                System.out.println("Идем гулять без зонта");
            } else {
                if (hasUmbrella) {
                    System.out.println("Берем зонт на прогулку");
                } else {
                    System.out.println("Остаемся дома");
                }
            }
        } else {
            System.out.println("Слишком холодно для прогулки");
        }
    }
}
Сообщения
Проверить
Показать подсказку

3. Сборка матрешки

id: 40449_build_nested_structure

Из предложенных строк соберите корректную Java-программу, которая демонстрирует работу вложенных условий if, как матрешка: внешняя проверка (наличие билета) содержит внутреннюю проверку (возраст). Программа должна выводить "Вход разрешен", если билет есть и возраст 18 или больше, "Требуется сопровождение", если билет есть и возраст меньше 18, и "Билет не найден", если билета нет. Одна из строк является лишней и не должна входить в решение.

Перетяните в правильном порядке строки из одного блока в другой
public class Main {
    public static void main(String[] args) {
        boolean hasTicket = true; int age = 25;
        if (hasTicket) {
            if (age >= 18) System.out.println("Вход разрешен");
            else System.out.println("Требуется сопровождение");
        } else System.out.println("Билет не найден");
    }
}
        System.out.println("Проверка завершена");
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Дописываем логику

id: 40449_fill_nested_logic

Допишите условия во внешнем и внутреннем операторе if так, чтобы код корректно проверял возраст и выдавал скидку только подходящему посетителю. Во внешнем if нужно проверить, что посетитель достиг 18 лет, а во внутреннем — что он одновременно является студентом и имеет билет. Заполните пропуски булевыми выражениями, не изменяя остальной код.

Заполните пропуски
int age = 20;
boolean hasTicket = true, isStudent = true;
// Сначала проверяем, что посетитель достиг 18 лет (используйте оператор >=)
if (input1S) {
    System.out.println("Вход разрешён");
    // Скидка только студенту с билетом (оба условия должны быть true)
    if (input2S) {
        System.out.println("Вы получаете скидку!");
    }
} else {
    System.out.println("Вход запрещён");
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Ошибка в логике

id: 40449_nested_logic_error

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

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        int age = 16;
        boolean hasTicket = true;
        
        if (age >= 18)
            if (hasTicket)
                System.out.println("Добро пожаловать в кино!");
        else
            System.out.println("Вы слишком молоды для этого фильма.");
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Счетчик внутри условий

id: 40449_give_final_var_value

Рассмотрите фрагмент Java-кода с вложенными условиями if, в котором переменная score изменяется по мере прохождения проверок. Проследите выполнение программы построчно: как меняется значение score в зависимости от значений переменных и выполненных веток if/else. Введите в поле одно целое число — итоговое значение score, которое будет выведено на экран.

Что должно получиться?
public class Main {
    public static void main(String[] args) {
        int score = 3, time = 7;
        if (time < 10) {
            score += 5;
            if (time < 5) score *= 2;
            else score -= 1;
        } else score--;
        System.out.println(score);
    }}
Сообщения
Проверить
Показать подсказку

7. Выбор структуры

id: 40449_select_correct_nesting

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

Нужно правильно расставить в пропуски предложенные варианты
public class SelectCorrectNesting {
    public static void main(String[] args) {
        int age = 70;
        boolean hasTicket = true;
        if (age >= 18) {
            input1S (hasTicket) {
                System.out.println("Обычный вход");
            } input2S (age > 65) {
                System.out.println("Скидка для пенсионера");
        } } }
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру