Часто требуется прерывать цикл или выполнение функции при выполнении некоторых условий и перейти на выполнение другого алгоритма или очередной итерации цикла. В Java имеются гибкие структурные средства для решения подобных проблем – это операторы break, continue, return, System.exit:
continue прерывание выполнения тела цикла и переход к следующей итерации текущего цикла,
continue меткапрерывание выполнения тела цикла и переход к следующей итерации цикла, помеченного меткой,
break выход из текущего цикла,
break меткавыход из цикла, помеченного меткой,
return выход из текущей функции (в том числе из тела цикла) без возвратазначения,
return значениевыход из текущей функции (в том числе из тела цикла) с возвратомзначения,
System.exit(n) выход из приложения с кодом завершенияn – целым числом, задаваемым программистом (n=0 – выход нормальный, в остальных случаях – аварийный). Перед своим завершением приложение сообщает операционной системе код завершения, чтобы программист смог установить, по какой причине произошел аварийный выход,
меткаидентификатор (имя), после которого ставится двоеточие. Метка может располагаться перед любым оператором. В этом случае оператор называется помеченным:
label_1: // метка
for (int i=1; i<=4; i++)
for (int j=1; j<=4; j++)
{
if (i==j)
continue label_1; // переход на метку label_1
System.out.println(“i=” + i + “ j=” +j);
}
В окне вывода появится:
i=2 j=1
i=3 j=1
i=3 j=2
i=4 j=1
i=4 j=2
i=4 j=3
При выполнении условия (i==j) внутренний цикл прерывается, и управление передается внешнему циклу – берется следующее значение i, а внутренний цикл сбрасывается на j=1.
label_1:
for (int i=1; i<=4; i++)
for (int j=1; j<=4; j++)
{
if (i!=j)
break label_1; // переход на метку label_1
System.out.println(“i=” + i + “ j=” +j);
}
В окне вывода появится:
i=1 j=1
При первом же выполнении условия (i!=j) прерывается цикл, перед которым стоит метка label_1, то есть внешний цикл, и программа заканчивает работу.
for (int i=1; i<=4; i++)
{
label_1:
for (int j=1; j<=4; j++)
{
if (i==j)
break label_1;
System.out.println(“i=” + i + “ j=” +j);
}
}
В окне вывода появится:
i=2 j=1
i=3 j=1
i=3 j=2
i=4 j=1
i=4 j=2
i=4 j=3
При первом же выполнении условия (i==j) прерывается цикл, перед которым стоит метка label_1, то есть внутренний цикл , и управление передается внешнему циклу – берется следующее значение i, а внутренний цикл сбрасывается на j=1. Такой же результат получается, если совсем убрать метку label_1 перед внутренним циклом: