Условия
Как программа принимает решения
До этого код выполнялся сверху вниз без выбора. Условия позволяют изменить этот маршрут: выполнить один фрагмент кода, если выражение истинно, и другой — если нет. Именно так программа начинает реагировать на данные, а не просто выполнять одну и ту же последовательность действий.
Условие if
В круглых скобках после if должно находиться выражение типа
boolean. Если оно даёт true,
код внутри блока выполняется. Если false — блок пропускается.
int temperature = 28;
if (temperature > 25) {
System.out.println("Жарко");
}
Здесь выражение temperature > 25 уже знакомо тебе по операторам.
Новая часть — if, который использует результат этого выражения,
чтобы решить, выполнять блок или нет.
if (temperature) не скомпилируется:
условие должно иметь значение true или false.
Два варианта: if и else
Когда нужно выбрать один из двух путей, к if добавляют
else. Выполнится ровно одна из двух веток.
int balance = 700;
int price = 500;
if (balance >= price) {
System.out.println("Покупка доступна");
} else {
System.out.println("Недостаточно средств");
}
Несколько вариантов: else if
Если вариантов больше двух, условия можно проверять по очереди через
else if. Java идёт сверху вниз и выполняет первую ветку,
условие которой оказалось истинным. Остальные ветки этой цепочки уже не проверяются.
int score = 82;
if (score >= 90) {
System.out.println("Отлично");
} else if (score >= 75) {
System.out.println("Хорошо");
} else if (score >= 60) {
System.out.println("Зачёт");
} else {
System.out.println("Нужно повторить тему");
}
Порядок здесь важен. Для значения 82 проверка
score >= 90 не проходит, следующая проходит — и программа
сразу выбирает ветку «Хорошо».
Составные и вложенные условия
Внутри if можно использовать уже знакомые логические операторы,
а один условный блок можно поместить внутрь другого. Это полезно, когда вторую проверку
имеет смысл делать только после первой.
boolean loggedIn = true;
boolean isAdmin = false;
if (loggedIn) {
if (isAdmin) {
System.out.println("Панель администратора");
} else {
System.out.println("Личный кабинет");
}
}
Вложенность лучше не делать слишком глубокой: если блоки начинают уходить далеко вправо, обычно код можно организовать понятнее. К этому мы ещё вернёмся, когда появятся методы.
switch для выбора по одному значению
Цепочка else if удобна для диапазонов и разных логических выражений.
Но если один и тот же результат нужно сравнить с несколькими конкретными вариантами,
часто нагляднее использовать switch.
int level = 2;
int bonus = switch (level) {
case 1 -> 100;
case 2 -> 250;
case 3 -> 500;
default -> 0;
};
System.out.println(bonus);
Здесь switch не просто выбирает ветку, а сразу возвращает значение,
которое записывается в bonus. Стрелка
-> отделяет вариант case
от результата, а default обрабатывает все остальные значения.
case ставят двоеточие и часто используют
break. Для новых простых конструкций вариант со стрелками
обычно легче читать и не допускает случайного перехода в следующий case.
Что выбрать
if / else if / else— когда решение строится на произвольных логических выражениях, диапазонах или нескольких разных проверках;switch— когда выбираешь действие или значение по одному результату из нескольких конкретных вариантов.
Обе конструкции решают одну задачу: позволяют программе выбирать, какой код выполнять дальше. В следующей теме эта идея пригодится снова — только вместо однократного выбора код сможет повторять действия несколько раз.