多階層do-while文の複数の階層のループ処理をbreakで終了させる

入れ子(ネスト)で多階層にしたdo-while文において、複数の階層のループ(繰り返し)処理を終了させたいときは、break文にラベルを指定する。

構文

do {
 条件式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: 3以降のループ処理を実行していない点に注目。