1-4-3:繰り返しのブロック構造


・ 繰り返しの処理のブロックは、その内部にさらに繰り返しの処理を記述する という階層構造が許されています。 このようなループは「多重ループ」と呼ばれます。


for( int i=0; i<10; i++ ) {
    for( int j=0; j<10; j++ ) {

       二重ループの処理

    }
}

・ 多重ループの記述で1つ問題となるのは、break文の解釈です。 どのレベルの繰り返し処理を中断するのか、指定できないと困ります。 Cなどの言語の場合は、この「多重ループを抜ける」という目的の場合のみ goto文(プログラム内の任意の場所へのジャンプ命令)の使用を例外的に認めています。
Javaではgoto文を完全に追放しているため、多重ループの脱出には別のルールが 必要となります。 その解決方法として、「ラベル付きループ」の概念が導入されています。 多重のループを break文で抜ける場合には、あらかじめ for,whileのループに 固有の名前を「ラベル」として指定しておきます。 break文の後に、脱出したいループの名前を指定できるようになっています。


outer: for( int i=0; i<10; i++ ) {
    inner: for( int j=0; j<10; j++ ) {

        if( a < 0 )
           break inner;

        if( b < 0 )
           break outer;
    }
}