Вчера читал книжку JAVA IN A NUTSHELL, Полное руководство, Девид Фленэген; O'REILLY, O-bhv, Киев 1998.
На странице 55 в разделе "Операторы break и continue с метками" приведены следующие два примера использования.
Оператор break с меткой:
test:
if (check(i)){
try{
for(int j = 0; j < 10; j++){
if ( j > i ) break;
if ( a[i][j] == null)
break test;
}
}
finally {cleanup(a, i, j); }
}
Оператор continue с меткой:
big_loop:
while(!done){
if ( test(a, b) == 0 ) continue;
try{
for (int i = 0; i < 10; i++){
if ( a[i] == null)
continue;
else if (b[i] == null)
continue big_loop;
doit(a[i], b[i]);
}
}
finally { cleanup(a, b); }
}
Ну, что я могу сказать. Волосы у меня дыбом встали. Разьве можно так кодировать? Тем более, разьве можно в книгах типа "JAVA IN A NUTSHELL полное руководство" приводить такие не культурные примеры кода?
Я бы, например, написал что-то вроде такого:
IF check(i) THEN
FOR j := 0 TO MIN(9, i) DO
IF a[i, j] = NIL THEN cleanup(a, i, j) END
END
END
WHILE ~done DO
IF test(a, b) # 0 THEN
FOR i := 0 TO 9 DO
IF a[i] # NIL THEN
IF b[i] # NIL THEN doit(a[i], b[i]) ELSE cleanup(a, b) END
END
END
END
END