Программирование на Java
Шрифт:
Вот такая конструкция вызовет ошибку времени компиляции.
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");
}
недопустима.
Также
Управление циклами
В языке 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);
}
Следует помнить, что цикл while будет выполнен только в том случае, если на момент начала его выполнения логическое выражение будет истинным. Таким образом, при выполнении программы может иметь место ситуация, когда цикл while не будет выполнен ни разу.
boolean b = false;
while(b) {
System.out.println("Executed");
}
В данном случае строка System.out.println("Executed");
выполнена не будет.
Цикл do
Основная форма цикла do имеет следующий вид:
do
повторяющееся выражение или блок;
while(логическое выражение)
Цикл do будет выполняться до тех пор, пока логическое выражение будет истинным. В отличие от цикла while, этот цикл будет выполнен, как минимум, один раз.
Типичная конструкция цикла do:
int counter = 0;
do {
counter ++;
System.out.println("Counter is "
+ counter);
}
while(counter < 5);
В остальном выполнение цикла do аналогично выполнению цикла while, включая использование операторов break и continue.
Цикл for
Довольно часто бывает необходимо изменять значение какой-либо переменной в заданном диапазоне и выполнять повторяющуюся последовательность операторов с использованием этой переменной. Для выполнения такой последовательности действий как нельзя лучше подходит конструкция цикла for.
Основная форма цикла for выглядит следующим образом:
for(выражение инициализации; условие;
выражение обновления)
повторяющееся выражение или блок;
Ключевыми элементами данной языковой конструкции являются предложения, заключенные в круглые скобки и разделенные точкой с запятой.
Выражение инициализации выполняется до начала выполнения тела цикла. Чаще всего используется как некое стартовое условие (инициализация, или объявление переменной).
Условие должно быть логическим выражением и трактуется точно так же, как логическое выражение в цикле while. Тело цикла выполняется до тех пор, пока логическое выражение истинно. Как и в случае с циклом while, тело цикла может не исполниться ни разу. Это происходит, если логическое выражение принимает значение "ложь" до начала выполнения цикла.
Выражение обновления выполняется сразу после исполнения тела цикла и до того, как проверено условие продолжения выполнения цикла. Обычно здесь используется выражение инкрементации, но может быть применено и любое другое выражение.