Главная страница » 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 днем объединены, и для них выполняется один и тот же код.
switchbreakЕсли забыть вставить 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-2025 Все права защищены. CodeFor.
Язык сайта: