ラベル付きbreak文

広告

break文が実行されるとbreak文を含む一番内側のブロックを抜けますが、ラベル付きのbreak文にすることで任意のブロックを抜けることができます。ラベル付きbreak文の書式は次の通りです。

break ラベル;

breakの後にラベルを付けて実行します。次に抜ける対象となるブロックにラベルを付けます。基本的な書式は次のようになります。

ラベル: {
  ...
  break ラベル;
  ...
}

for文やwhile文の前に「ラベル:」のようにラベルを付けます。この時、break文はラベルを付けたブロックの中に記述されている必要があります。次の例を見てください。

outside: for (int i = 1; i < 5; i++){
  for (int j = 1; j < 5; j++){
    if (i * j > 10){
      break outside;
    }

    System.out.println(i + "*" + j + "=" + (i * j));
  }
}

ラベルが無いbreak文では一番内側のブロックを抜けるだけですが、ラベル付きbreak文が実行されると、指定されたラベルが付けられたブロックを抜けます。よって上記の場合はif文の条件式がtrueになると一番外側のfor文を抜けます。

ラベルはfor文やwhile文だけではなくif文やブロックだけのものに付けることもできます。

outside:{
  for (int i = 1; i < 5; i++){
    for (int j = 1; j < 5; j++){
      if (i * j > 10){
        break outside;
      }

      System.out.println(i + "*" + j + "=" + (i * j));
    }
  }
}

ラベル付きbreak文は多重ループを抜ける場合に便利ですが、あまり多用するとプログラムが分かりにくくなる場合もありますので注意して使うようにして下さい。

サンプル

では簡単な例で試しておきます。

JSample3_1.java

class JSample3_1{
  public static void main(String args[]){

    outside: for (int i = 1; i < 5; i++){
      for (int j = 1; j < 5; j++){
        if (i * j > 10){
          break outside;
        }

        System.out.println(i + "*" + j + "=" + (i * j));
      }
    }
  }
}

コンパイル後に実行すると次のように表示されます。

p3-1

( Written by Tatsuo Ikura )