☕ Java

Условия (if/else/switch) в Java 17: подробное руководство

Условные операторы в Java: if, else и switch

Что такое условия и зачем они нужны?

Представь, что ты — робот, который выполняет команды. Обычно команды идут одна за другой: "сделай шаг", "повернись", "сделай шаг". Но что делать, если нужно принять решение? Например: "Если на улице идёт дождь, возьми зонтик. Иначе надень кепку".

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

В Java 17 есть два основных способа проверять условия: if/else и switch.

Основной синтаксис if/else

Конструкция if проверяет условие в круглых скобках. Если условие истинно (true), выполняется код в фигурных скобках. Если ложно (false), выполняется код после else (если он есть).

if (условие) {
    // код, который выполнится, если условие истинно
} else {
    // код, который выполнится, если условие ложно
}

Пример 1: Проверка возраста

Программа спрашивает возраст и говорит, можно ли водить машину (с 18 лет).

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Сколько тебе лет? ");
        int age = scanner.nextInt();

        if (age >= 18) {
            System.out.println("Ты можешь водить машину!");
        } else {
            System.out.println("Тебе ещё рано водить машину.");
        }
    }
}

Ввод: 16
Вывод: Тебе ещё рано водить машину.

Ввод: 20
Вывод: Ты можешь водить машину!

Несколько условий: else if

Если нужно проверить несколько вариантов, используется else if. Он добавляется между if и else.

if (условие1) {
    // код для условия1
} else if (условие2) {
    // код для условия2
} else {
    // код, если ни одно условие не подошло
}

Пример 2: Оценка за экзамен

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введи количество баллов (0-100): ");
        int score = scanner.nextInt();

        if (score >= 90) {
            System.out.println("Отлично! Ты молодец!");
        } else if (score >= 70) {
            System.out.println("Хорошо, но можно лучше.");
        } else if (score >= 50) {
            System.out.println("Удовлетворительно.");
        } else {
            System.out.println("К сожалению, ты не сдал.");
        }
    }
}

Ввод: 85
Вывод: Хорошо, но можно лучше.

Оператор switch

Когда нужно сравнить одну переменную с множеством конкретных значений, удобнее использовать switch. Он работает быстрее и код выглядит аккуратнее.

switch (переменная) {
    case значение1:
        // код для значения1
        break;
    case значение2:
        // код для значения2
        break;
    default:
        // код, если ни одно значение не подошло
}

Важно! После каждого блока case нужно писать break;, иначе программа "провалится" в следующий case (это называется fall-through).

Пример 3: День недели

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введи номер дня недели (1-7): ");
        int day = scanner.nextInt();

        switch (day) {
            case 1:
                System.out.println("Понедельник — начало недели!");
                break;
            case 2:
                System.out.println("Вторник — рабочий день.");
                break;
            case 3:
                System.out.println("Среда — маленькая пятница.");
                break;
            case 4:
                System.out.println("Четверг — почти пятница.");
                break;
            case 5:
                System.out.println("Пятница — ура, скоро выходные!");
                break;
            case 6:
            case 7:
                System.out.println("Выходной! Отдыхай!");
                break;
            default:
                System.out.println("Такого дня недели не существует.");
        }
    }
}

Ввод: 6
Вывод: Выходной! Отдыхай!

Разбор типичных задач

Задача "Что больше?"
Нужно сравнить два числа и вывести, какое из них больше.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введи первое число: ");
        int a = scanner.nextInt();
        System.out.print("Введи второе число: ");
        int b = scanner.nextInt();

        if (a > b) {
            System.out.println("Первое число (" + a + ") больше второго (" + b + ")");
        } else if (b > a) {
            System.out.println("Второе число (" + b + ") больше первого (" + a + ")");
        } else {
            System.out.println("Числа равны.");
        }
    }
}

Задача "Чётность числа"
Проверяем, делится ли число на 2 без остатка. Для этого используем оператор % (остаток от деления).

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введи число: ");
        int number = scanner.nextInt();

        if (number % 2 == 0) {
            System.out.println("Число " + number + " — чётное.");
        } else {
            System.out.println("Число " + number + " — нечётное.");
        }
    }
}

Ввод: 7
Вывод: Число 7 — нечётное.

Частые ошибки новичков

  • Забыли фигурные скобки: Если после if или else стоит только одна команда, скобки можно не ставить. Но лучше всегда их ставить — это помогает избежать ошибок.
  • Путают = и ==: Один знак равенства = — это присваивание. Два знака == — это сравнение. Ошибка: if (a = 5) — так делать нельзя!
  • Забыли break в switch: Без break программа продолжит выполнять код следующих case, даже если условие не подходит.
  • Неправильный порядок условий: В конструкциях с else if порядок важен. Если написать if (x > 0) перед if (x > 10), то второе условие никогда не сработает для чисел больше 10.

Итоговый пример: "Магазин сладостей"

Магазин даёт скидку: если сумма покупки больше 1000 рублей, скидка 10%. Если больше 5000 рублей — скидка 20%. Иначе скидки нет.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Введи сумму покупки: ");
        double sum = scanner.nextDouble();
        double discount = 0;

        if (sum > 5000) {
            discount = 20;
            System.out.println("Поздравляем! У тебя скидка 20%!");
        } else if (sum > 1000) {
            discount = 10;
            System.out.println("Отлично! Твоя скидка 10%!");
        } else {
            System.out.println("К сожалению, скидка не положена.");
        }

        double finalSum = sum - (sum * discount / 100);
        System.out.println("Итоговая сумма к оплате: " + finalSum + " рублей.");
    }
}

Ввод: 2000
Вывод:
Отлично! Твоя скидка 10%!
Итоговая сумма к оплате: 1800.0 рублей.

Ввод: 6000
Вывод:
Поздравляем! У тебя скидка 20%!
Итоговая сумма к оплате: 4800.0 рублей.

Теперь ты знаешь, как заставить программу принимать решения! Условные операторы — это основа любой логики в программировании. Пробуй, экспериментируй и не бойся ошибок — на них учатся.