Главная страница » Java » 51. Конструкция Switch
Конструкция switch
в Java используется для проверки значения переменной и выполнения определённого блока кода в зависимости от этого значения. Она является альтернативой множественным операторам if-else
и упрощает код, когда нужно выполнить разные действия в зависимости от конкретных значений переменной.
switch
Конструкция switch
работает с типами данных byte
, short
, int
, char
, перечислениями (enum
), строками (String
), и классами-оболочками (Byte
, Short
, Integer
, Character
).
Синтаксис:
switch (выражение) {
case значение1:
// Код, выполняемый, если выражение равно значение1
break;
case значение2:
// Код, выполняемый, если выражение равно значение2
break;
// можно добавлять больше case
default:
// Код, выполняемый, если ни одно из значений не совпадает с выражением
}
выражение
— переменная или результат выражения, которое нужно проверить.case значение
— конкретное значение, с которым сравнивается выражение
.break
— оператор, который завершает выполнение switch
после выполнения кода для соответствующего случая.default
— необязательный блок, выполняющийся, если ни одно из значений не совпадает.switch
Рассмотрим пример использования switch
, где программа выводит день недели по его номеру.
Пример:
public class Main {
public static void main(String[] args) {
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
case 7:
dayName = "Sunday";
break;
default:
dayName = "Invalid day";
break;
}
System.out.println("Day: " + dayName);
}
}
В этом примере значение переменной day
сравнивается с числами от 1 до 7, и программа выводит название дня недели. Если значение переменной не совпадает ни с одним из этих значений, срабатывает блок default
, который выводит сообщение «Invalid day».
switch
С Java 7 конструкция switch
поддерживает сравнение строковых значений (String
).
Пример:
public class Main {
public static void main(String[] args) {
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("You selected Apple.");
break;
case "Banana":
System.out.println("You selected Banana.");
break;
case "Orange":
System.out.println("You selected Orange.");
break;
default:
System.out.println("Unknown fruit.");
break;
}
}
}
Здесь программа сравнивает строковое значение fruit
с возможными вариантами и выводит соответствующее сообщение.
case
(fall-through)Если после блока case
не используется оператор break
, выполнение кода продолжится в следующем блоке case
. Это называется «падение через case
» (fall-through).
Пример:
int month = 5;
int days;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
days = 28;
break;
default:
days = 0; // Неизвестный месяц
break;
}
System.out.println("Number of days: " + days);
В этом примере, если month
равно 5, программа выполнит код days = 31;
, так как все случаи для месяцев с 31 днем объединены, и для них выполняется один и тот же код.
switch
break
Если забыть вставить break
после блока case
, программа продолжит выполнение следующих блоков, что может привести к непредсказуемому поведению.
Пример ошибки:
int number = 2;
switch (number) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
default:
System.out.println("Unknown");
}
Результат будет:
Two
Three
Unknown
Здесь программа после выполнения блока case 2:
продолжила выполнение блоков case 3:
и default
из-за отсутствия break
.
Конструкция switch
работает только с ограниченным набором типов данных. Попытка использовать тип данных, не поддерживаемый switch
, приведёт к ошибке компиляции.
Пример ошибки:
double value = 3.14;
switch (value) {
case 3.14:
System.out.println("Pi");
break;
default:
System.out.println("Unknown");
}
Здесь произойдет ошибка компиляции, так как тип double
не поддерживается в конструкции switch
.
Конструкция switch
является полезным инструментом для обработки ситуаций, когда нужно проверить переменную на несколько возможных значений и выполнить соответствующий код. Она делает код более читабельным и понятным, чем множественные if-else
конструкции, особенно когда количество вариантов велико.
Напишите программу, которая на основе номера месяца (от 1 до 12) определяет, к какому времени года он относится:
Допишите программу, которая определяет вид транспортного средства по числу колёс:
Пример решения:
public class Main {
public static void main(String[] args) {
int month = 4;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "Winter";
break;
case 3:
case 4:
case 5:
season = "Spring";
break;
case 6:
case 7:
case 8:
season = "Summer";
break;
case 9:
case 10:
case 11:
season = "Autumn";
break;
default:
season = "Unknown";
break;
}
System.out.println("Season: " + season);
int wheels = 4;
String vehicle;
switch (wheels) {
case 2:
vehicle = "Motorcycle";
break;
case 4:
vehicle = "Car";
break;
case 6:
vehicle = "Truck";
break;
default:
vehicle = "Unknown vehicle";
break;
}
System.out.println("Vehicle: " + vehicle);
}
}
Проверьте свою программу, чтобы убедиться, что она правильно выполняет все операции и обрабатывает возможные ошибки.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.