for を使ったループをbreak + labelで抜ける
breakによってLOOPから処理を中断して抜け出すことが出来ますが、labelを指定すると、labelのつけられたコードブロック全体を抜け出す事ができます。
下のコードは九九をイメージした掛け算を実行し、答えが20を超えると処理を終わります。
また、掛算演算子の左の値がが1の場合と右の値が奇数の場合は処理を飛ばします。
class ExamBreak {
public static void main(String args[]) {
label1:
//System.out.println("Do not insert statement between label and loop");
for ( int ix1 = 1 ; ix1 < 10 ; ix1++ ) {
for ( int ix2 = 1 ; ix2 < 10 ; ix2++ ) {
if ( ix1 * ix2 > 20 ) {
break label1;
}
if ( ix1 == 1 ) {
break;
}
if ( ix2 % 2 == 1) {
continue;
}
System.out.println(ix1 * ix2);
}
}
}
}
|
実行結果
コンソールに
4
8
12
16
6
12
18
と表示されます。つまり下のような計算が実行された結果です。
4.........2*2
8.........2*4
12.......2*6
16.......2*8
6.........3*2
12.......3*4
18.......3*6
break
label記述の無いbreakでは内側のLOOPを中断し、外側のLOOPの処理に制御が移ります。
label記述の有るbreakでは内側のLOOPを中断し、labelのついている外側のLOOPも中断して次に制御を移しています。
labelは繰り返しのstatement(コードブロック)につけるもので、繰り返しではないstatementに記述すると、コンパイルエラーになります。
for文の構文の説明はこちら
continueの説明を少々