Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Именованные блоки
В реальной практике достаточно часто используются вложенные даслы. Соответственно, может возникнуть ситуация, когда из вложенно-Ф цикла нужно прервать внешний. Простое использование break или O^ritinue не решает этой задачи, однако в Java можно именовать блок кода дивно указать операторам, к какому из них относится выполняемое действие. Делается это путем присвоения метки операторам do, while, for.
Метка — это любая допустимая в данном контексте лексема, оканчивавшаяся двоеточием.
Рассмотрим следующий пример:
int array[][] = {....}; for(int i=0;i<5;i++) { for(j=0;j<4; {
if(array[i][j] == caseValue) break;
}
}
В данном случае при выполнении условия будет прервано выполнение цикла по j, цикл по i продолжится со следующего значения. Для того, чтобы прервать выполнение обоих циклов, используется метка:
int array[][] = {....}; outerLoop: for(int i=0;i<5;i++) { for(j=0;j<4; j++){
if(array[i][j] == caseValue) break outerLoop;
}
}
Оператор continue также может использоваться с именованными боками.
Между операторами break и continue есть еще одно существенное отличие. Оператор break может использоваться с
любым именованным блоком, в этом случае его действие в чем-т0 похоже на действие goto. Оператор continue (как и отмечалось ранее) может быть использован только в теле цикла. То есть такая конструк. ция будет вполне приемлемой:
1ы:{
if( val > maxVal) break Ibi;
}
В то время как оператор continue здесь применять нельзя. В данном случае при выполнении условия if выполнение блока с меткой Ibi будет прервано, то есть управление будет передано на оператор (выражение), следующий непосредственно за закрывающей фигурной скобкой.
Метки используют пространство имен, отличное от пространства имен классов и методов.
Так, следующий пример кода будет вполне работоспособным:
public class Test { public Test() { }
public static void main(String[] args) { Testt = new Test(); t.test();
}
void test() { Test: {
test: for(int i =0;true;i++) { if(i % 2 == 0) continue test; if(i > 10) break Test; System.out.print(i + " ");
}
}
}
}
Для составления меток применяются те же синтаксические правила, что и для переменных, за тем исключением, что метки всегда оканчиваются двоеточием. Метки всегда должны быть привязаны к какому-либо блоку кода