Конструкция switch в Java
В Java есть специальная конструкция switch,
которая используется для выбора одного значения
из некоторого ряда значений. В круглых скобках
пишут переменную, в ветках case - значения,
а break заканчивает выбранную ветку.
Как вы можете заметить, switch представляет
собой альтернативу множеству else if.
Переключатель работает и с числом, и со строкой.
Давайте посмотрим на примере. Пусть у нас есть
вот такой код:
int num = 1;
if (num == 1) {
System.out.println("value1");
} else if (num == 2) {
System.out.println("value2");
} else if (num == 3) {
System.out.println("value3");
} else {
System.out.println("incorrect value");
}
Перепишем этот код через конструкцию switch:
int num = 1;
switch (num) {
case 1:
System.out.println("value1"); // сработает это
break;
case 2:
System.out.println("value2");
break;
case 3:
System.out.println("value3");
break;
default:
System.out.println("incorrect value");
break;
}
Блок default является необязательным.
Если значение не совпало ни с одной веткой
и блока default нет, ничего не произойдет.
Команда break в обычном switch
тоже формально необязательна. Без нее выполнение
не останавливается на выбранной ветке и идет
дальше, в следующие case. Пусть в
переменной число 2:
int num = 2;
switch (num) {
case 1:
System.out.println(1);
case 2:
System.out.println(2); // сработает это
case 3:
System.out.println(3); // и это тоже
}
Сначала выполняется case 2, а затем
неожиданно и case 3, потому что
break не написан. Поэтому в обычном
switch после ветки ставят break.
Перепишите следующий код, выбрав подходящую конструкцию:
String lang = "ru";
if (lang.equals("ru")) {
System.out.println("rus");
} else if (lang.equals("en")) {
System.out.println("eng");
} else if (lang.equals("de")) {
System.out.println("deu");
} else {
System.out.println("language not supported");
}
Дан код:
int port = 443;
Для 80 выведите "http",
для 443 - "https",
для 21 - "ftp",
иначе "custom port".
Переменная num может принимать значения
1, 2, 3 или 4.
Определите, в какую пору года попадает
значение этой переменной.