switch (выражение) {

case значение_1:

// Блок команд 1

break;

case значение_2:

// Блок команд 2

break;

case значение_3:

// Блок команд 3

break;

// другие case—блоки

case значение_n:

// Блок команд n

break;

default:

// Блок команд по умолчанию

}

При выполнении оператора switch вычисляется значение выражения в круглых скобках. Затем это значение поочередно, сверху вниз, сравнивается со значениями, указанными в начале каждого case—блока. Как только обнаружено совпадение, выполняется набор команд соответствующего блока.

Коварство оператора switch заключается в том, что при обнаружении совпадения выполняются все команды до конца оператора, включая команды в case—блоках, расположенных ниже. Если необходимо, чтобы выполнялись команды только одного блока, его необходимо завершать инструкцией break.

Оператор завершается необязательным блоком default. Команды этого блока выполняются в том случае, если не обнаружено ни одного совпадения с контрольными значениями. Поскольку блок default завершает конструкцию, в нем не используется инструкция break.

Вернитесь к среде разработки NetBeans и введите или загрузите пример программы, использующей оператор выбора (листинг 4.1).


Листинг 4.1 Пример использования оператора выбора

// импортируем класс JOptionPane из библиотеки Swing

import javax.swing.JOptionPane;

public class Listing4_1 {


public static void main (String [] args) {

int userData;

String userInput;

// Выводим окно запроса текущей даты

userInput = JOptionPane.showInputDialog («Введите число от 1 до 3»);

// Преобразуем строку в число в явном виде

userData = Integer.parseInt (userInput);


switch (userData) {

case 1:

JOptionPane.showMessageDialog (null, «Вы ввели число 1»);

break;

case 2:

JOptionPane.showMessageDialog (null, «Вы ввели число 2»);

break;

case 3:

JOptionPane.showMessageDialog (null, «Вы ввели число 3»);

break;

default:

JOptionPane.showMessageDialog (null, «Вы ввели недопустимое число!»);

}

}

}

В этой программе мы используем уже знакомые вам диалоговые окна, чтобы попросить пользователя ввести число от 1 до 3 и вывести ответное сообщение. Если пользователь вводит число в указанном диапазоне, то выводится подтверждение ввода. Если введенное число не соответствует ни одному из контрольных значений, то срабатывает блок default и выводится сообщение об ошибке.

Данная программа наглядно демонстрирует работу оператора switch, но не является оптимальной с точки зрения кода программы.

Давайте воспользуемся знаниями о логических операторах и условном операторе if и перепишем программу. Попробуйте переделать программу самостоятельно, не заглядывая в готовый пример из листинга 4.2.


Листинг 4.2 Пример программы с использованием логического и условного оператора

// импортируем класс JOptionPane из библиотеки Swing

import javax.swing.JOptionPane;

public class Listing4_2 {


public static void main (String [] args) {

int userData;

String userInput;

// Выводим окно запроса текущей даты

userInput = JOptionPane.showInputDialog («Введите число от 1 до 3»);

// Преобразуем строку в число в явном виде

userData = Integer.parseInt (userInput);


if ((userData> =1) & (userData <=3)) {

JOptionPane.showMessageDialog (null, «Вы ввели число " + userData);

}

else {

JOptionPane.showMessageDialog (null, «Вы ввели недопустимое число!»);

}

}

}

Отредактированная часть программы выделена жирным шрифтом. Как видите, получилась более компактная и универсальная конструкция. В условном операторе if использовано составное условие

(userData> =1) & (userData <=3)

Оно означает, что условие будет истинным, если значение переменной userData больше или равно единице И меньше или равно трем. В этом случае выводится диалоговое окно с сообщением об ошибке.