ラベル付きcontinue文

広告

continue文が実行されると、continue文を含む一番内側のブロックのcontinue文以降の処理をスキップしますが、ラベル付きのcontinue文にすることで任意のブロックの最後まで処理をスキップさせることができます。ラベル付きbreak文の書式は次の通りです。

continue ラベル;

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

ラベル: while(条件式){
  ...
  continue ラベル;
  ...
}

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

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

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

ラベルが無いcontinue文では一番内側のブロックの最後までスキップされるだけですが、ラベル付きcontinue文が実行されると、指定されたラベルが付けられたブロックの最後までの処理がスキップされ次の繰り返しに移ります。よって上記の場合はif文の条件式がtrueになると一番外側のfor文の最後まで処理がスキップされ次の繰り返しに入ります。

なおbreak文と異なりcontinue文ではif文やブロックだけのものにラベルを付けて使用することはできません。

サンプル

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

JSample5_1.java

class JSample5_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 > 8){
          continue outside;
        }

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

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

p5-1

( Written by Tatsuo Ikura )