Читаем Программирование на Java полностью

Оператор switch() удобно использовать в случае необходимости множественного выбора. Выбор осуществляется на основе целочисленного значения.

Структура оператора:


switch(int value) {

case const1:

выражение или блок

case const2:

выражение или блок

case constn:

выражение или блок

default:

выражение или блок

}


Причем, фраза default не является обязательной.

В качестве параметра switch может использоваться переменная типа byte, short, int, char или выражение. Выражение должно в конечном итоге возвращать параметр одного из указанных ранее типов. В операторе switch не могут применяться значения примитивного типа long и ссылочных типов Long, String, Integer, Byte и т.д.

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

Если не выполнен ни один оператор case, то выполнится оператор default, если он имеется в данном switch. Если оператора default нет и ни одно из условий case не выполнено, то ни одно из выражений switch также выполнено не будет.

Следует обратить внимание, что, в отличие от многозвенного if-else, если какое-либо условие case выполнено, то выполнение switch не прекратится, а будут выполняться следующие за ним выражения. Если этого необходимо избежать, то после кода следующего за оператором case используется оператор break, прерывающий дальнейшее выполнение оператора switch.

После оператора case должен следовать литерал, который может быть интерпретирован как 32-битовое целое значение. Здесь не могут применяться выражения и переменные, если они не являются final static.

Рассмотрим пример:


int x = 2;

switch(x) {

case 1:

case 2:

System.out.println("Равно 1 или 2");

break;

case 3:

case 4:

System.out.println("Равно 3 или 4");

break;

default:

System.out.println(

"Значение не определено");

}


В данном случае на консоль будет выведен результат "Равно 1 или 2". Если же убрать операторы break, то будут выведены все три строки.

Вот такая конструкция вызовет ошибку времени компиляции.


int x = 5;

switch(x) {

case y: // только константы!

...

break;

}


В операторе switch не может быть двух case с одинаковыми значениями.

Т.е. конструкция


switch(x) {

case 1:

System.out.println("One");

break;

case 1:

System.out.println("Two");

break;

case 3:

System.out.println("Tree or other value");

}


недопустима.

Также в конструкции switch может быть применен только один оператор default.

Управление циклами

В языке Java имеется три основных конструкции управления циклами:


цикл while ;

цикл do ;

цикл for.

Цикл while

Основная форма цикла while может быть представлена так:


while(логическое выражение)

повторяющееся выражение, или блок;

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

Операторы continue и break могут изменять нормальное исполнение тела цикла. Так, если в теле цикла встретился оператор continue, то операторы, следующие за ним, будут пропущены и выполнение цикла начнется сначала. Если continue используется с меткой и метка принадлежит к данному while, то выполнение его будет аналогичным. Если метка не относится к данному while, его выполнение будет прекращено и управление будет передано на оператор, или блок, к которому относится метка.

Если встретился оператор break, то выполнение цикла будет прекращено.

Если выполнение блока было прекращено по какой-то другой причине (возникла исключительная ситуация), то выполнение всего цикла будет прекращено по той же причине.

Рассмотрим несколько примеров:


public class Test {

static int x = 5;

public Test() { }

public static void main(String[] args) {

Test t = new Test();

int x = 0;

while(x < 5) {

x++;

if(x % 2 == 0) continue;

System.out.print(" " + x);

}

}

}


На консоль будет выведено

1 3 5

т.е. вывод на печать всех четных чисел будет пропущен.

public class Test {

static int x = 5;

public Test() { }

public static void main(String[] args) {

Test t = new Test();

int x = 0;

int y = 0;

lbl: while(y < 3) {

y++;

while(x < 5) {

x++;

if(x % 2 == 0) continue lbl;

System.out.println("x=" + x + " y="+y);

}

}

}

}


На консоль будет выведено

x=1 y=1

x=3 y=2

x=5 y=3

т.е. при выполнении условия if(x % 2 == 0) continue lbl; цикл по переменной x будет прерван, а цикл по переменной y начнет новую итерацию.

Типичный вариант использования выражения while():


int i = 0;

while( i++ < 5) {

System.out.println("Counter is " + i);

}


Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT