入れ子(ネスト)で多階層にしたdo-while文において、複数の階層のループ(繰り返し)処理を終了させたいときは、break文にラベルを指定する。
構文
do {
条件式Aが「true」の間、繰り返し行う処理
ラベル:
do {
条件式Bが「true」の間、繰り返し行う処理
do {
条件式Cが「true」の間、繰り返し行う処理
break ラベル; // 条件式Bの階層までのループ(繰り返し)処理を終了させ、条件式Aの次のループ(繰り返し)処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
条件式Aが「true」の間、繰り返し行う処理
ラベル:
do {
条件式Bが「true」の間、繰り返し行う処理
do {
条件式Cが「true」の間、繰り返し行う処理
break ラベル; // 条件式Bの階層までのループ(繰り返し)処理を終了させ、条件式Aの次のループ(繰り返し)処理へ移る
} while ( 条件式C );
} while ( 条件式B );
} while ( 条件式A );
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package samplePackage; public class SampleClass { public static void main( String[] args ){ int $varA = 1; do { System.out.println( "$varA: " + $varA++ ); int $varB = 1; sample: do { System.out.println( "■$varB: " + $varB++ ); int $varC = 1; do { if ( $varC == 2 ) { break sample; } System.out.println( "■■$varC: " + $varC++ ); } while ( $varC < $varB ); } while ( $varB < $varA ); } while ( $varA <= 3 ); } } |
実行結果
$varA: 1
■$varB: 1
■■$varC: 1
$varA: 2
■$varB: 1
■■$varC: 1
■$varB: 2
■■$varC: 1
$varA: 3
■$varB: 1
■■$varC: 1
■$varB: 2
■■$varC: 1
■$varB: 1
■■$varC: 1
$varA: 2
■$varB: 1
■■$varC: 1
■$varB: 2
■■$varC: 1
$varA: 3
■$varB: 1
■■$varC: 1
■$varB: 2
■■$varC: 1
ラベルを指定しなかった場合の実行結果と違い■$varB: 3
以降のループ処理を実行していない点に注目。