Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
}
}
System.out.println();
//А здесь метка располагается непосредственно перед
// открывающей фигурной скобкой.
for(x=0; х < 5; х++)
stop2: {
for(у =0; у < 5; у++) {
if(у == 2) break stop2;
System.out.println("х and у: " + x + " " + у);
}
}
}
}
Ниже приведен результат выполнения данного фрагмента кода.
х and у: 0 0
х and у: 0 1
х and у: 0 0
х and у: 0 1
X and У 1 0
X and У 1 1
X and У 2 0
X and У 2 1
X and У 3 0
X and У 3 1
X and У 4 0
X and У 4 1
Ряды вложенных циклов в данном фрагменте кода идентичны за исключением того, что в первом ряду метка находится перед внешним циклом for. В таком случае при выполнении оператора break управление передается в конец всего блока цикла for, а оставшиеся итерации внешнего цикла пропускаются. Во втором ряду метка находится перед открывающей фигурной скобкой кодового блока, определяющего тело внешнего цикла. Поэтому при выполнении оператора break stop2 управление передается в конец тела внешнего цикла for, и далее выполняется очередной его шаг.
Не следует, однако, забывать, что в операторе break нельзя использовать метку, не определенную в объемлющем его цикле. Например, приведенный ниже фрагмент кода некорректен и не подлежит компиляции.
// Этот фрагмент кода содержит ошибку,
class BreakErr {
public static void main(String args[]) {
one: for(int i=0; i<3; i++) {
System.out.print("Pass " + i + ” : ") ;
}
for(int j=0; j<100; j++) {
if(j == 10) break one; // НЕВЕРНО!
System, out .print (j + " 11 );
}
}
Кодовый блок, обозначенный меткой one, не содержит оператор break, и поэтому управление не может быть передано этому блоку.
Применение оператора continue
С помощью оператора continue можно организовать преждевременное завершение шага итерации цикла в обход обычной структуры управления циклом. Оператор continue осуществляет принудительный переход к следующему шагу цикла, пропуская любой код, оставшийся невыполненным. Таким образом, оператор continue служит своего рода дополнением оператора break. В приведенном ниже примере программы оператор continue используется в качестве вспомогательного средства для вывода четных чисел в пределах от 0 до 100.
// Применение оператора continue.
class ContDemo {
public static void main(String args[]) {
int i;
// вывести четные числа в пределах от 0 до 100
for(i = 0; i<=100; i++) {
if((i%2) != 0) continue; // завершить шаг итерации цикла
System.out.println(i);
}
}
}
В данном примере выводятся только четные числа, поскольку при обнаружении нечетного числа шаг итерации цикла завершается преждевременно в обход вызова метода println().
В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, после чего продолжается процесс выполнения цикла. А в цикле for сначала вычисляется итерационное выражение, затем условное выражение, после чего цикл продолжается.
Как и в операторе break, в операторе continue может присутствовать метка, обозначающая тот объемлющий цикл, выполнение которого должно быть продолжено. Ниже приведен пример программы, демонстрирующий применение оператора continue с меткой.
// Применить оператор continue с меткой,
class ContToLabel {
public static void main(String args[]) {
outerloop:
for(int i=l; i < 10; i++) {
System.out.print("\nOuter loop pass " + i +
", Inner loop: ");
for(int j = 1; j < 10; j++) {
if(j == 5) continue outerloop; // продолжить внешний цикл
System.out.print (j);
}
}
}
}
Выполнение этой программы дает следующий результат: