Условия (if)

Во многих задачах нужно действовать по-разному в зависимости от условия:
если число положительное – написать одно, если отрицательное – другое, если ноль – третье.

Для этого в Java есть оператор if. Он проверяет логическое выражение (да/нет) и в зависимости от результата выполняет нужный блок кода.

int x = in.nextInt();

if (x > 0) {
    System.out.println("Положительное");
} else if (x < 0) {
    System.out.println("Отрицательное");
} else {
    System.out.println("Ноль");
}

Краткая сводка

Условие в Java всегда основано на значении типа booleantrue или false.

Основные формы записи:

if (условие) {
    // код, если условие истинно
}
if (условие) {
    // если истинно
} else {
    // если ложно
}
if (условие1) {
    // вариант 1
} else if (условие2) {
    // вариант 2
} else {
    // все остальные случаи
}

Чаще всего условия строятся из сравнений (==, !=, <, >, <=, >=) и логических операций (&&, ||, !).


Простое условие: if

Самый простой вариант — выполнить блок кода только когда условие истинно.

int age = in.nextInt();

if (age >= 18) {
    System.out.println("Взрослый");
}

System.out.println("Конец программы");

Если age >= 18 истинно, будет выведено два сообщения.
Если ложно — только "Конец программы".


Два варианта: if … else

Когда нужно выбрать между двумя вариантами, используется if … else:

int x = in.nextInt();

if (x % 2 == 0) {
    System.out.println("Чётное");
} else {
    System.out.println("Нечётное");
}

Здесь всегда выполняется ровно один из блоков: либо после if, либо после else.


Несколько вариантов: цепочка if … else if … else

Если вариантов больше двух, можно сделать цепочку условий:

int x = in.nextInt();

if (x > 0) {
    System.out.println("Положительное");
} else if (x < 0) {
    System.out.println("Отрицательное");
} else {
    System.out.println("Ноль");
}

Блоки проверяются сверху вниз:

  • сначала проверяется первое условие;
  • если оно ложно, проверяется следующее else if;
  • если все условия ложны, выполняется блок else (если он есть).

Диапазоны и составные условия

Частая задача — проверить, попадает ли число в некоторый диапазон.

int x = in.nextInt();

if (x >= 1 && x <= 100) {
    System.out.println("В диапазоне 1..100");
} else {
    System.out.println("Вне диапазона");
}

Здесь используется логическое И (&&): оба условия x >= 1 и x <= 100 должны быть истинны.

Другой пример — один из нескольких вариантов:

int month = in.nextInt();

if (month == 12 || month == 1 || month == 2) {
    System.out.println("Зима");
}

Здесь логическое ИЛИ (||): достаточно, чтобы истинным было хотя бы одно из сравнений.


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

Иногда удобно писать условия внутри условий:

int x = in.nextInt();

if (x >= 0) {
    if (x % 2 == 0) {
        System.out.println("Неотрицательное чётное");
    } else {
        System.out.println("Неотрицательное нечётное");
    }
} else {
    System.out.println("Отрицательное");
}

Такие конструкции нужно писать аккуратно и не усложнять без необходимости.
Часто вложенные if можно заменить на одну цепочку if … else if … else.


Типичные шаблоны

Максимум из двух чисел

int a = in.nextInt();
int b = in.nextInt();

int max;

if (a >= b) {
    max = a;
} else {
    max = b;
}

System.out.println(max);

Классический «знак числа»

int x = in.nextInt();

if (x > 0) {
    System.out.println(1);
} else if (x < 0) {
    System.out.println(-1);
} else {
    System.out.println(0);
}

Проверка корректности значения

int score = in.nextInt();

if (score < 0 || score > 100) {
    System.out.println("Некорректное значение");
} else {
    System.out.println("ОК");
}

Блок-схемы

Что нужно запомнить

Условие в if — это логическое выражение (boolean), которое даёт true или false.

Основные формы: одиночный if, пара if … else и цепочка if … else if … else.

Сложные условия удобно строить из сравнений и логических операций: диапазоны — через &&, варианты «или то, или это» — через ||.