Мы уже знаем типы данных и переменные. Но пока наши программы умеют только «посчитать 2+2». Сегодня научимся принимать решения и повторять действия — без этого не работает ни одна серьёзная программа.
Представь, что программа должна:
if (если) — выполняет код, только когда условие истинно.
( ).{ }.else (иначе) — выполняется, когда условие ложно.
Когда вариантов больше двух, используют цепочку else if.
else в конце — «на всё остальное».score >= 60, то 95 тоже попадёт в «Удовлетворительно». Всегда проверяй от большего к меньшему.В условиях можно комбинировать несколько проверок.
&& — «строже», нужно всё. || — «мягче», хватит одного.У операторов есть порядок выполнения. Это важно, когда в одном условии несколько операторов.
Тернарный оператор — короткая форма if-else, которая возвращает значение.
условие ? значение_если_true : значение_если_false.if-else.switch — когда нужно проверить одно значение на много вариантов.
case — вариант значения.break — выход из switch. Без него выполнение «провалится» в следующий case.default — если ни один case не подошёл.break — код «провалится» в следующий case. Это классическая ошибка. Иногда это нужно специально, но чаще — баг.В классическом switch можно проверять не всё.
if-else.Представь, что нужно:
println? Нет.while (пока) — повторяет код, пока условие истинно.
do-while — сначала выполняет тело, потом проверяет условие. Тело выполнится хотя бы один раз.
for — самый частый цикл. В нём сразу три части: инициализация, условие, шаг.
Цикл for можно настраивать по-разному.
i += 2 — это то же, что i = i + 2. Частая форма записи в циклах.for-each — упрощённый цикл для перебора всех элементов массива или коллекции.
break — немедленно прерывает цикл. Управление переходит на строку после цикла.
continue — пропускает остаток тела и переходит к следующей итерации.
break — выйти совсем, continue — пропустить итерацию.Попробуй решить эти задачи. Они простые, но закрепляют всё.
if-else.for.for и if.if (x = 5) — ошибка компиляции. Нужно if (x == 5).case. Иногда это нужно, но чаще — баг.if (x > 5); — тело пустое, дальше выполняется всегда.while (i < 5) без изменения i — программа зависнет.i <= array.length — ошибка. Нужно i < array.length.if отличается от else if?else?&& отличается от ||?break в switch?while отличается от do-while?for, а когда for-each?break отличается от continue?while?i <= array.length — ошибка?Всё, что дальше — для тех, кто уже уверенно пишет if и for и хочет узнать больше. Если пока сложно — пропусти этот блок и вернись позже.
Современная Java позволяет использовать switch как выражение — он возвращает значение.
break.Если циклы вложены друг в друга, break выходит только из внутреннего. Чтобы выйти из обоих, используют метки.
outer: — метка, имя для внешнего цикла.break outer; — выйти из цикла с этой меткой.continue.В современной Java многие циклы заменяются на Stream API — функциональный стиль обработки коллекций.
Соберём игру, которая использует всё, что мы прошли.
Random, Scanner, while, if-else, return, счётчик попыток. Идеальный пример.Мы разобрали условия и циклы. Теперь можно двигаться дальше.
🔀
Условия и циклы — это «мускулы» кода
Теперь твои программы умеют думать и повторять. Это уже серьёзный уровень.