На этом этапе вашего пути в изучении Java вы переходите к более серьезным вещам. Добро пожаловать в модуль "Условия и циклы" — здесь мы научимся управлять потоком выполнения программы, принимать решения и повторять действия. Именно эти механизмы делают программы умными и полезными.
Давайте разберемся, как ветвление и циклы помогают писать гибкий, мощный код.
Переменные и область видимости
Прежде чем углубиться в условия и циклы, давайте вспомним: переменная живёт в определённом блоке кода. Это область, ограниченная фигурными скобками {}.
public class ScopeExample {
public static void main(String[] args) {
int x = 10; // переменная x объявлена в main
if (x > 5) {
int y = 20; // переменная y объявлена внутри if
System.out.println(x + y); // x и y доступны
}
// System.out.println(y); // Ошибка! y не видна вне блока if
}
}
🔍 Пояснение:
- x видна везде в main.
- y живёт только внутри блока if.
Условные операторы
if, else if, else
Оператор if позволяет выполнять код только при выполнении условия.
int age = 18;
if (age >= 18) {
System.out.println("Вы совершеннолетний.");
} else {
System.out.println("Вам ещё нет 18.");
}
Можно добавить промежуточные условия:
int score = 75;
if (score >= 90) {
System.out.println("Отлично!");
} else if (score >= 70) {
System.out.println("Хорошо.");
} else {
System.out.println("Нужно постараться.");
}
🔍 Пояснение:
- Если score >= 90, выполняется только первый блок.
- Если score >= 70, но меньше 90 — второй.
- Иначе — третий.
switch
Если много if-else, switch выглядит чище.
int day = 3;
switch (day) {
case 1:
System.out.println("Понедельник");
break;
case 2:
System.out.println("Вторник");
break;
case 3:
System.out.println("Среда");
break;
default:
System.out.println("Неизвестный день");
}
🔍 Пояснение:
- case сравнивает day со значением.
- break прерывает выполнение switch.
- default — как else, если ничего не подошло.
Циклы
while
int i = 0;
while (i < 5) {
System.out.println("i = " + i);
i++;
}
🔍 Пояснение:
- Цикл выполняется, пока i < 5.
- Каждый раз i увеличивается на 1.
do-while
int j = 0;
do {
System.out.println("j = " + j);
j++;
} while (j < 3);
🔍 Пояснение:
- Отличие от while: тело цикла всегда выполняется хотя бы один раз.
for
for (int k = 1; k <= 3; k++) {
System.out.println("Привет, мир " + k);
}
🔍 Пояснение:
- int k = 1 — инициализация.
- k <= 3 — условие.
- k++ — шаг цикла.
break и continue
for (int i = 0; i < 5; i++) {
if (i == 3) break;
System.out.println(i);
}
- break завершает весь цикл.
for (int i = 0; i < 5; i++) {
if (i == 2) continue;
System.out.println(i);
}
- continue пропускает текущую итерацию и переходит к следующей.
Тест на понимание
- Что произойдёт при выполнении следующего кода?
int a = 2;
switch (a) {
case 1:
System.out.println("Один");
break;
case 2:
System.out.println("Два");
default:
System.out.println("Другое число");
}
A. Вывод: Один
B. Вывод: Два
C. Вывод: Два и Другое число
D. Ошибка компиляции
- Что делает continue?
A. Завершает весь цикл
B. Пропускает следующую итерацию
C. Возвращает значение
D. Перезапускает программу
- Какой цикл гарантирует выполнение тела хотя бы один раз?
A. for
B. while
C. do-while
D. ни один
Практические задачи
Задача 1.
Выведите все чётные числа от 1 до 20.
Задача 2.
Запросите у пользователя возраст. Если возраст меньше 12, выведите "Ребёнок", от 12 до 17 — "Подросток", от 18 и выше — "Взрослый".
Задача 3.
С помощью for напишите таблицу умножения на 3 от 1 до 10.
Заключение
Вы узнали, как:
- использовать блоки кода и понимать область видимости переменных,
- применять if, else if, else и switch для принятия решений,
- повторять действия с помощью for, while, do-while,
- управлять циклом с помощью break и continue.
Теперь вы можете писать интерактивные, логически гибкие программы на Java!
Ответы на тест
- Что произойдёт при выполнении следующего кода?
✅ Правильный ответ: C. Вывод: Два и Другое число - Что делает continue?
✅ Правильный ответ: B. Пропускает следующую итерацию - Какой цикл гарантирует выполнение тела хотя бы один раз?
✅ Правильный ответ: C. do-while
Подробный разбор задач
Задача 1. Чётные числа от 1 до 20
for (int i = 1; i <= 20; i++) {
if (i % 2 == 0) {
System.out.println(i);
}
}
🔍 Пояснение:
- i % 2 == 0 означает, что число чётное.
- Выводим только такие i.
Задача 2. Определение возраста
import java.util.Scanner;
public class AgeChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите возраст: ");
int age = scanner.nextInt();
if (age < 12) {
System.out.println("Ребёнок");
} else if (age < 18) {
System.out.println("Подросток");
} else {
System.out.println("Взрослый");
}
}
}
🔍 Пояснение:
- Используем Scanner для ввода.
- Условия идут от меньшего к большему — это важно.
Задача 3. Таблица умножения на 3
for (int i = 1; i <= 10; i++) {
System.out.println("3 x " + i + " = " + (3 * i));
}
🔍 Пояснение:
- Перебираем от 1 до 10.
- Умножаем 3 на i, выводим результат.