Здравствуйте, Сергей Губанов, Вы писали:
СГ>Вчера читал книжку 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
СГ>
ну ваш пример вообще на паскале =)
а чтоже касается книжки..то там пишеться для ламеров и со временем члеовек эти баги сам назодит.... главное в книге что код работает
... << RSDN@Home 1.1.4 beta 4 rev. 303>>