Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Условия

Условия позволяют программе выбирать, какой код выполнить. Без них программа всегда делала бы одно и то же: показывала бы скидку всем подряд или пускала на сайт без пароля.

if

Код в фигурных скобках после if выполняется, только если условие в круглых скобках истинно. Код в фигурных скобках называется блоком:

void main() {
    int age = 20;
 
    if (age >= 18) {
        IO.println("Доступ разрешён");
    }
}

Результат:

Доступ разрешён

Условие в Java обязательно должно иметь тип boolean. Число или строку в условие подставить нельзя — компилятор сообщит об ошибке.

else

Блок else выполняется, когда условие ложно. Из двух блоков всегда срабатывает ровно один:

void main() {
    int age = 15;
 
    if (age >= 18) {
        IO.println("Доступ разрешён");
    } else {
        IO.println("Доступ запрещён");
    }
}

Результат:

Доступ запрещён

else if

Если вариантов больше двух, между if и else добавляют else if. Условия проверяются сверху вниз, и срабатывает первое подходящее — остальные пропускаются:

void main() {
    int score = 75;
 
    if (score >= 90) {
        IO.println("Отлично");
    } else if (score >= 70) {
        IO.println("Хорошо");
    } else {
        IO.println("Нужно подтянуть");
    }
}

Результат:

Хорошо

Порядок важен: если бы проверка >= 70 стояла первой, результат 95 баллов тоже получил бы «Хорошо».

Составные условия

Несколько проверок объединяют логическими операторами && (и) и || (или). Java вычисляет их сокращённо: если ответ ясен по левой части, правая не проверяется:

void main() {
    int age = 25;
    boolean hasTicket = true;
 
    if (age >= 18 && hasTicket) {
        IO.println("Проходите на сеанс");
    }
}

Результат:

Проходите на сеанс

Тернарный оператор

Когда нужно выбрать одно из двух значений, удобен тернарный оператор условие ? значение1 : значение2. Он возвращает первое значение, если условие истинно, и второе — если ложно:

void main() {
    int stock = 0;
    String status = stock > 0 ? "В наличии" : "Нет в наличии";
    IO.println(status);
}

Результат:

Нет в наличии

Тернарный оператор хорош для коротких выборов. Если веток больше или в них несколько действий, пишите обычный if.

Частая ошибка

Лишняя точка с запятой после условия отрезает от него блок. if управляет пустой инструкцией ;, а блок в скобках выполняется всегда:

void main() {
    int balance = 0;
 
    if (balance > 100); {
        IO.println("Покупка оформлена");
    }
}

Результат:

Покупка оформлена

Компилятор не считает это ошибкой, поэтому её легко пропустить. После ) условия сразу должна идти {.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.