Использование оператора Switch для множественного выбора в Java

Если вашей программе на Java необходимо сделать выбор между двумя или тремя действиями, достаточно будет оператора if, then, else . Однако оператор if, then, else начинает казаться громоздким, когда программе может потребоваться сделать ряд вариантов. Есть очень много операторов else … if , которые вы хотите добавить, прежде чем код начнет выглядеть неопрятно. Когда требуется принять решение по нескольким параметрам, используйте оператор switch.

Оператор Switch

Оператор switch позволяет программе возможность сравнивать значение выражения со списком альтернативных значений. Например, представьте, что у вас есть раскрывающееся меню, содержащее числа от 1 до 4. В зависимости от того, какой номер выбран, вы хотите, чтобы ваша программа делала что-то другое:

//допустим, пользователь выбирает номер 4 
int menuChoice = 4;
switch (menuChoice)
{
case 1:
JOptionPane.showMessageDialog (null, «Вы выбрали номер 1.»);
break;
случай 2:
JOptionPane.showMessageDialog (null, «Вы выбрали номер 2»);
break;
case 3:
JOptionPane.showMessageDialog (null, «Вы выбрали номер 3.»);
break;
//Это опция выбирается, потому что значение 4 соответствует значению
//переменной menuChoise
case 4: JOptionPane.showMessageDialog (null, «Вы выбрали номер 4»); break;
по умолчанию:
JOptionPane.showMessageDialog (null, «Что-то пошло не так!»);
break;
}

Если вы посмотрите на синтаксис оператора switch, вы должны заметить несколько вещей:

1 . Переменная, содержащая значение, которое необходимо сравнить, помещается вверху в скобки.

2. Каждый альтернативный вариант начинается с метки корпуса. Далее идет значение, которое будет сравниваться с верхней переменной, за которым следует двоеточие. Например, case 1: – это метка case, за которой следует значение 1 – так же легко может быть case 123: или case -9 :. У вас может быть столько альтернативных вариантов, сколько вам нужно.

3. Если вы посмотрите на приведенный выше синтаксис, будет выделен четвертый альтернативный вариант – метка case, код, который он выполняет (то есть JOptionPane), и оператор break. Оператор break сигнализирует об окончании кода, который необходимо выполнить. Если вы посмотрите, вы увидите, что каждый альтернативный вариант заканчивается оператором break. Очень важно не забыть вставить оператор break. Рассмотрим следующий код:

//допустим, пользователь выбирает номер 1 
int menuChoice = 1;
switch (menuChoice )
случай 1:
JOptionPane.showMessageDialog (null, "Вы выбрали номер 1.");
случай 2:
JOptionPane.showMessageDialog (null, "Вы выбрал номер 2. ");
break;
case 3:
JOptionPane.showMessageDialog (null," Вы выбрали номер 3. ");
break;
случай 4:
JOptionPane. showMessageDialog (null, «Вы выбрали номер 4.»);
break;
по умолчанию:
JOptionPane.showMessageDialog (null, «Что-то пошло не так!»);
break;
}

Вы ожидаете увидеть диалоговое окно с сообщением: «Вы выбрали номер 1, “но поскольку нет оператора break, соответствующего первой метке case, код во второй метке case также выполняется. Это означает, что следующее диалоговое окно с сообщением «Вы выбрали номер 2» также появится.

4. Внизу оператора switch есть метка по умолчанию. Это похоже на подстраховку на случай, если ни одно из значений меток case не совпадает с сравниваемым значением. Очень полезно предоставить способ выполнения кода, когда ни один из желаемых параметров не выбран.

Если вы всегда ожидаете выбора одного из других вариантов, тогда вы можете оставить метку по умолчанию, но ставить ее в конце каждого создаваемого оператора switch – хорошая привычка. Может показаться маловероятным, что он когда-либо будет использоваться, но ошибки могут закрасться в код, и это может помочь отловить ошибку.

Начиная с JDK 7

Одно из изменений синтаксиса Java с выпуском JDK 7 – это возможность использовать строки в операторах switch. Возможность сравнения значений String в операторе switch может быть очень удобной:

 String name = "Bob"; 
switch (name.toLowerCase ())
{
case "joe":
JOptionPane.showMessageDialog (null, "Доброе утро, Джо!");
break;
case «майкл»:
JOptionPane.showMessageDialog (null, «Как дела, Майкл?»);
break;
case «bob»:
JOptionPane .showMessageDialog (null, «Боб, мой старый друг!»);
break;
case «billy»:
JOptionPane.showMessageDialog (null, «Добрый день, Билли, как дети? ? ");
break;
по умолчанию:
JOptionPane.showMessageDialog (null,« Рад познакомиться, Джон Доу. »);
break;
}

При сравнении двух значений String может быть намного проще, если вы убедитесь, что все они находятся в одном регистре. . Использование метода .toLowerCase означает, что все значения меток case могут быть в нижнем регистре.

Что нужно помнить об операторе Switch

• Тип сравниваемой переменной должен быть char, byte, short, int, Character, Byte, Short, Integer, String или enum type.

• Значение рядом с меткой case не может быть переменной. Это должно быть постоянное выражение (например, литерал int, литерал char).

• Значения константных выражений во всех метках case должны будь другим. Следующее может привести к ошибке времени компиляции:

 switch (menuChoice) 
{
case 323:
JOptionPane.showMessageDialog (null, "Вы выбрали вариант 1. ");
break;
case 323:
JOptionPane.showMessageDialog (null,« Вы выбрали вариант 2. »);
break;

• В операторе switch может быть только одна метка по умолчанию.

• При использовании объекта для оператора переключения (например, String, Integer, Character) убедитесь, что он не равен нулю. Нулевой объект приведет к ошибке времени выполнения при выполнении оператора switch.

Оцените статью
recture.ru
Добавить комментарий