Содержание
- 1 Структура оператора switch такова:
- 2 Синтаксис Javascript Switch Case
- 3 Принцип действия
- 4 Пример работы
- 5 Оператор switch в JavaScript
- 6 Использование switch в функциях
- 7 Заявление break
- 8 Ключевое слово default
- 9 Общие блоки кода
- 10 Детали переключения
- 11 Строгое сравнение
- 12 Лейблы case
- 13 Лейбл по умолчанию
- 14 switch и fall-through
- 15 Несколько стейтментов внутри блока switch
Структура оператора switch такова:
switch(variable_to_test){case value: code_here;break;case value: code_here;break;default: values_not_caught_above;}
Итак, вы начинаете со слова switch, после которого следует пара круглых скобок. Переменная, которую вы хотите проверить, находится в круглых скобках switch. Затем идут фигурные скобки. В них находятся все остальные части оператора switch.
Для каждого значения, которое вы хотите проверить, вам нужно слово case (случай с англ.). После пишете само значение, которое хотите проверить:
После следует двоеточие. Затем вы помещаете код, который вы хотите выполнить, если значение совпадет.
Ключевое слово break (обрыв с англ.) необходимо для выхода из каждого case оператора switch.
Значение default (по умолчанию с англ.) в конце не обязательное. Оно может быть включено, если есть другие значения, которые могут храниться в вашей переменной, но которые вы не проверяли в своих case в switch.
Если все это сбивает с толку, попробуйте следующий код.
Вы можете начать новый проект или просто закомментировать код, который у вас есть. Быстрый способ закомментировать код в NetBeans – вверху с панели инструментов. Сначала выделите код, который вы хотите закомментировать. Затем нажмите значок комментария:
Если у вас нет этой панели инструментов, тогда сверху нажмите View, и выберите из выпадающего списка Show Editor Toolbar:
Итак, код:
publicstaticvoid main(String[] args){int user =21;switch(user){case18:System.out.println(«Вам 18 лет»);break;case19:System.out.println(«Вам 19 лет»);break;case20:System.out.println(«Вам 20 лет»);break;default:System.out.println(«Вам не 18, 19 или 20 лет»);}}
Первое, что делает код, это устанавливает значение для проверки. Опять же, мы создали переменную int и назвали ее user, установили для нее значение 18.
Оператор switch проверит нашу переменную и смотрит, что в ней.
Затем он будет проходить через каждое из case по очереди. Когда он находит тот, который соответствует, он останавливается и выполняет код для этого случая.
Затем происходит выход из оператора switch.
Запустите эту программу. Введите различные значения для переменной user и посмотрите, что произойдет.
К сожалению, мы не можем проверить диапазон значений, только одно. Таким образом мы не можем сделать так:
case (user <= 18):
Но мы можем сделать так:
case1:case2:case3:case4:
Вышеприведенная строка проверяет диапазон значений от 1 до 4. Но вы должны прописать каждое значение. (Обратите внимание, где все case и двоеточия.)
Чтобы закончить этот раздел про условные операторы, попробуйте пройти эти упражнения.
Упражнение C
Напишите программу, которая принимает пользовательский ввод с консоли. Программа должна принять число, а затем пройти тестирование для следующих возрастных диапазонов: от 0 до 10, от 11 до 20, от 21 до 30, 31 год и старше. Отобразите сообщение в окне Вывод в следующем формате:
age +» это между 21 и 30 годами»
То есть, если пользователь вводит свой возраст 27 лет, окно вывода должно выглядеть так:
Если пользователю 30 или более лет, вы можете просто отобразить следующее сообщение:
«Вам более 30 лет»
Ответ на упражнение C
Помощь для этого упражнения
Чтобы получить от пользователя значения String, вы должны сделать это:
String age = user_input.next();
Но метод next () используется для строк. Возраст, который вы получаете от пользователя, должен быть целым числом, поэтому вы не можете использовать next (). Однако есть аналогичный метод, который вы можете использовать: nextInt ().
Используйте оператор switch.
Упражнение D
Если вы хотите проверить, совпадает ли одна строка с другой, вы можете использовать метод с именем equals.
String user_name =»Иван»;if(user_name.equals(«Иван»)){//какой-то код}
В приведенном выше коде мы создали переменную String и назвали ее user_name. Затем мы присвоили ей значение «Иван». В круглых скобках if мы снова пишем имя переменной, за которым следует точка. После точки следует слово equals. Между другой парой круглых скобок вы вводите строку, которую вы хотите проверить.
ПРИМЕЧАНИЕ. При проверке, совпадает ли одна строка с другой, учтите, что они должны совпадать точно. То есть «Иван» отличается от «иван». Первая имеет заглавную букву «И», а вторая — строчную «и».
Для этого упражнения напишите программу, в которой пользователю предлагается выбрать один из четырех цветов: черный, белый, красный или синий. Используйте операторы if… else if для отображения одного из следующих сообщений, в зависимости от того, какой цвет был выбран:
ЧЕРНЫЙ «Должно быть, вы брюнет(ка)!»
БЕЛЫЙ «Вы светлый человек»
КРАСНЫЙ «Вы веселый и общительный»
СИНИЙ «Вы творческий человек»
Синтаксис Javascript Switch Case
Switch (expression) { Case Option 1: //Выполнить эту инструкцию, когда результат выражения соответствует Option 1 break; Case Option 2: // Выполнить эту инструкцию, когда результат выражения соответствует Option 2 break; Case Option 3: // Выполнить эту инструкцию, когда результат выражения соответствует Option 3 break; …… Case Option N: // Выполнить эту инструкцию, когда результат выражения соответствует Option N break; Default: // Выполнить эту инструкцию, когда результат выражения не соответствует ни одному из выражений Option break; }
Значение выражения должно быть либо целым числом, либо символами. Выражение можно прописать в виде n/2.… Но результат должен быть целым числом. Option 1, Option 2… это все константы.
JavaScript Case позволяет нам добавлять инструкцию по умолчанию. Если значение переменной не соответствует какому-либо из выражений, то будет исполнен код по умолчанию.
Оператор break используется для завершения цикла switch, иначе будут исполнены все инструкции в условном выражении switch. Каждый раз, когда встречается break, поток исполнения завершается.
Примечание:Switch Case в Javascript принимает только целые числа или символы, в то время как инструкция else if также принимает десятичные дроби.
Принцип действия
Как добавить элемент в массив JS или работаем с массивами в JavaScript как профи
Представляем вашему вниманию специальный график, который поможет понять принцип действия
Пример работы
Этот JavaScript switch case пример использования позволяет нам осуществлять арифметические операции с числами.
Код Javascript
JavaScript Switch Case
Результат 1: здесь мы ввели * в качестве переменной оператора:
Результат 2: Давайте заменим действующий оператор неверным, чтобы перепроверить значение по умолчанию:
Данная публикация является переводом статьи «JavaScript Switch Case» , подготовленная редакцией проекта.
Оператор switch в JavaScript
Как вы понимаете, использовать множество операторов if-else таким образом, как это показано выше, мягко говоря, неудобно. Поэтому почти во всех языках программирования имеется так называемый оператор выбора.
Оператор switch (иногда это называют “инструкция switch”) выполняет выбор того или иного участка кода для исполнения, в зависимости от значения проверяемой переменной.
Тот же самый код, который мы мучительно писали выше, с использованием оператора выбора будет выглядеть так:
var x = 1; switch(x) { case 1 : document.write(«x = 1
Оператор switch(x) проверяет значение переменной x, и сравнивает его со значениями, указанными после слов case. Если он находит совпадение, то выполняет исходный код, который находится после case. Если совпадения не найдены, то выполняется код по умолчанию, который находится после слова default.
Слово default не является обязательным. Если его нет, то в случае отсутствия совпадений просто ничего не происходит, и сценарий выполняется дальше.
ВАЖНО!
Обратите внимание на ключевое слово break. Если его не использовать, то после первого нахождения совпадения все последующие инструкции будут выполнены, а не только тот блок, где найдено совпадение. Например, вот такой сценарий:
var x = 2; //Использование switch без break switch(x) { case 1 : document.write(«x = 1
выведет на экран:
x = 2x = 3x = 2
ПРИМЕЧАНИЕ
Меня, как человека, начинавшего изучение программирования с Паскаля, такое поведение оператора выбора всегда сильно бесило. Но JavaScript создан на основе С/С++, поэтому вобрал в себя почти все их заморочки.
Использование switch в функциях
Как я уже сказал выше, ключевое слово break надо использовать в конце каждого блока case. Это слово служит в данном случае для выхода из блока switch, то есть для завершения работы оператора выбора.
Если же вы используете switch в функции, то можно слово break не применять, а обойтись только инструкцией return. Пример:
function TestSwitch(op, x, y) { switch(op) { case ‘+’ : return(x + y); case ‘-‘ : return(x — y); case ‘*’ : return(x * y); default : return(«Неизвестная операция»); } } document.write(TestSwitch(‘+’, 1, 2));
Этот пример выведет на экран число 3.
Как видите, язык JavaScript довольно гибкий. Одна и та же функция может возвращать как числовое значение, так и строковое, в зависимости от результата. Это, конечно, очень удобно, хотя и может привести к ошибкам из-за невнимательности программиста.
ПРИМЕЧАНИЕ
Слово default в наших примерах указывается в конце блока switch. Это соответствует логике, однако это не обязательно делать так, потому что default в JavaScript можно располагать в любом месте блока switch.
Заявление break
Хотя большинство операторов switch в реальной жизни подразумевают, что должен быть выполнен только один из блоков case, оператор break необходим для выхода из switch после завершения блока.
Чтобы продемонстрировать это, опустим операторы break и добавим вывод в консоль для каждого блока:
public String forgetBreakInSwitch(String animal) { switch (animal) { case «DOG»: System.out.println(«domestic animal»); default: System.out.println(«unknown animal»); } }
Давайте выполним этот код ForgotBreakInSwitch(«DOG») и проверим вывод, чтобы убедиться, что все блоки выполняются:
domestic animal
unknown animal
Поэтому нам следует быть осторожными и добавлять операторы break в конце каждого блока, если нет необходимости переходить к коду под следующей меткой.
Единственный блок, в котором не требуется разрыв, — это последний, но добавление разрыва к последнему блоку делает код менее подверженным ошибкам.
Мы также можем воспользоваться этим поведением, чтобы опустить break, когда мы хотим, чтобы один и тот же код выполнялся для нескольких операторов case. Давайте перепишем пример из предыдущего раздела, сгруппировав первые 2 случая:
public String exampleOfSwitch(String animal) { String result; switch (animal) { case «DOG»: case «CAT»: result = «domestic animal»; break; case «TIGER»: result = «wild animal»; break; default: result = «unknown animal»; break; } return result; }
Ключевое слово default
Ключевое слово default указывает код для запуска, если нет ни одного case match:
Пример
Метод getDay() возвращает день недели как число между 0 и 6.
Если сегодня ни суббота (6), ни воскресенье (0), напишите сообщение по умолчанию:
switch (new Date().getDay()) {
case 6:
text = «Сегодня суббота»;
break;
case 0:
text = «Сегодня воскресенье»;
break;
default:
text = «С нетерпением жду выходных»;
}
Общие блоки кода
Иногда вам может понадобиться, чтобы в разных вариантах переключения использовался один и тот же код.
В этом примере 4 и 5 совместно используют один и тот же блок кода, а 0 и 6 совместно используют другой блок кода:
Пример
switch (new Date().getDay()) {
case 4:
case 5:
text = «Скоро выходные»;
break;
case 0:
case 6:
text = «Сейчас выходные»;
break;
default:
text = «С нетерпением жду выходных»;
Детали переключения
Если несколько вариантов соответствуют значению case, выбирается первый вариант.
Если подходящих случаев не найдено, программа переходит к метке по умолчанию.
Если метка по умолчанию не найдена, программа переходит к заявлению (заявлениям) после переключателя.
Строгое сравнение
В случаях переключения используется строгое сравнение (===).
Для соответствия значения должны быть одного типа.
Строгое сравнение может быть истинным, только если операнды одного типа.
Пример
var x = «0»;
switch (x) {
case 0:
text = «Выкл»;
break;
case 1:
text = «Вкл»;
break;
default:
text = «Значение не найдено»;
Лейблы case
Первый вид лейбла — это case (или просто «кейс»), который объявляется с использованием ключевого словаcase и имеет константное выражение. Константное выражение — это то, которое генерирует константное значение, другими словами: либо литерал (например, 5), либо перечисление (например, COLOR_RED), либо константу (например, переменную x, которая была объявлена с ключевым словом const).
Константное выражение, находящееся после ключевого слова case, проверяется на равенство с выражением, находящимся возле ключевого слова switch. Если они совпадают, то тогда выполняется код под соответствующим кейсом.
Стоит отметить, что все выражения case должны производить уникальные значения. То есть вы не сможете сделать следующее:
<текстареа wrap=»soft» class=»urvanov-syntax-highlighter-plain print-no» data-settings=»» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 13px !important; line-height: 20px !important;»> switch (z) { case 3: case 3: // нельзя, значение 3 уже используется! case COLOR_PURPLE: // нельзя, COLOR_PURPLE вычисляется как 3! };
123456 | switch(z){ case3: case3:// нельзя, значение 3 уже используется! caseCOLOR_PURPLE:// нельзя, COLOR_PURPLE вычисляется как 3!}; |
Можно использовать сразу несколько кейсов для одного выражения. Следующая функция использует несколько кейсов для проверки, соответствует ли параметр p числу из ASCII-таблицы :
<текстареа wrap=»soft» class=»urvanov-syntax-highlighter-plain print-no» data-settings=»» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 13px !important; line-height: 20px !important;»> bool isDigit(char p) { switch (p) { case ‘0’: // если p = 0 case ‘1’: // если p = 1 case ‘2’: // если p = 2 case ‘3’: // если p = 3 case ‘4’: // если p = 4 case ‘5’: // если p = 5 case ‘6’: // если p = 6 case ‘7’: // если p = 7 case ‘8’: // если p = 8 case ‘9’: // если p = 9 return true; // возвращаем true default: // в противном случае, возвращаем false return false; } }
12345678910111213141516171819 | boolisDigit(charp){ switch(p) { case’0′:// если p = 0 case’1′:// если p = 1 case’2′:// если p = 2 case’3′:// если p = 3 case’4′:// если p = 4 case’5′:// если p = 5 case’6′:// если p = 6 case’7′:// если p = 7 case’8′:// если p = 8 case’9′:// если p = 9 returntrue;// возвращаем true default:// в противном случае, возвращаем false returnfalse; }} |
В случае, если p является числом из ASCII-таблицы, то выполнится первый стейтмент после кейса — return true;.
Лейбл по умолчанию
Второй тип лейбла — это лейбл по умолчанию (так называемый «default case»), который объявляется с использованием ключевого слова default. Код под этим лейблом выполняется, если ни один из кейсов не соответствует выражению switch. Лейбл по умолчанию является необязательным. В одном switch может быть только один default. Обычно его объявляют самым последним в блоке switch.
В вышеприведенном примере, если p не является числом из ASCII-таблицы, то тогда выполняется лейбл по умолчанию и возвращается false.
switch и fall-through
Одна из самых каверзных вещей в switch — это последовательность выполнения кода. Когда кейс совпал (или выполняется default), то выполнение начинается с первого стейтмента, который находится после соответствующего кейса и продолжается до тех пор, пока не будет выполнено одно из следующих условий завершения:
Достигнут конец блока switch.
Выполняется оператор return.
Выполняется оператор goto.
Выполняется оператор break.
Обратите внимание, если ни одного из этих условий завершения не будет, то выполняться будут все кейсы после того кейса, который совпал с выражением switch. Например:
<текстареа wrap=»soft» class=»urvanov-syntax-highlighter-plain print-no» data-settings=»» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 13px !important; line-height: 20px !important;»> switch (2) { case 1: // Не совпадает! std::cout << 1 << ‘n’; // пропускается case 2: // Совпало! std::cout << 2 << ‘n’; // выполнение кода начинается здесь case 3: std::cout << 3 << ‘n’; // это также выполнится case 4: std::cout << 4 << ‘n’; // и это default: std::cout << 5 << ‘n’; // и это }
12345678910111213 | switch(2){ case1:// Не совпадает! std::cout<<1<<‘n’;// пропускается case2:// Совпало! std::cout<<2<<‘n’;// выполнение кода начинается здесь case3: std::cout<<3<<‘n’;// это также выполнится case4: std::cout<<4<<‘n’;// и это default: std::cout<<5<<‘n’;// и это} |
Результат:
2
3
4
5
А это точно не то, что нам нужно! Когда выполнение переходит из одного кейса в следующий, то это называется fall-through. Программисты почти никогда не используют fall-through, поэтому в редких случаях, когда это все-таки используется — программист оставляет комментарий , в котором сообщает, что fall-through является преднамеренным.
Несколько стейтментов внутри блока switch
Еще одна странность в switch заключается в том, что вы можете использовать несколько стейтментов под каждым кейсом, не определяя новый блок:
<текстареа wrap=»soft» class=»urvanov-syntax-highlighter-plain print-no» data-settings=»» readonly=»» style=»-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 13px !important; line-height: 20px !important;»> switch (3) { case 3: std::cout << 3; boo(); std::cout << 4; break; default: std::cout << «default casen»; break; }
1234567891011 | switch(3){ case3: std::cout<<3; boo(); std::cout<<4; break; default: std::cout<<«default casen»; break;} |
- https://marina-marchenko.com/java/operator-switch-v-java/
- https://www.internet-technologies.ru/articles/javascript-rabotaem-s-sintaksicheskoy-konstrukciey-switch.html
- https://info-master.su/programming/web/js/switch.php
- https://hr-vector.com/java/operator-switch
- https://schoolsw3.com/js/js_switch.php
- https://ravesli.com/urok-65-operator-switch/