Условия (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 рублей.
Теперь ты знаешь, как заставить программу принимать решения! Условные операторы — это основа любой логики в программировании. Пробуй, экспериментируй и не бойся ошибок — на них учатся.