continue文の使い方

continue 文は for 文や while 文などの繰り返し処理で使用されるもので、 continue 文が実行されると繰り返し処理のブロック内にある continue 文以降の処理をスキップし、次の繰り返し処理へ移ります。ここでは continue 文、およびラベル付き continue 文の使い方について解説します。

(Last modified: )

continue文の使い方

continue 文は繰り返し処理で使用されるもので、 continue 文が実行されると現在の繰り返し処理のブロック内で continue 文以降の処理をスキップし次の繰り返し処理へ移ります。書式は次のとおりです。

continue

次の for 文を使ったサンプルを見てください。

for (int i = 1; i < 10; i++){

  if (i % 3 == 0){
    continue;
  }

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

System.out.println("End");

このサンプルでは 1 から 9 までの数値を画面に出力します。もし数値が 3 の倍数だった場合には continue 文を実行して繰り返し処理の中の以降の処理(今回の場合は数値の画面出力)をスキップして次の繰り返し処理へ進みます。

for 文の場合はブロックの最後まで処理が進むと、最後に変化式に記述した処理が行われます。 continue 文を実行した場合も同じように残りの処理をスキップしたあと最後に変化式を実行し、そのあとで新しい繰り返し処理へ入ります。

continue文の使い方(1)

今度は while 文を使ったサンプルを見てください。

int i = 0;

while (i < 9){

  i++;
  if (i % 3 == 0){
    continue;
  }

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

System.out.println("End");

このサンプルでは 1 から 9 までの数値を画面に出力します。もし数値が 3 の倍数だった場合には continue 文を実行して繰り返し処理の中の以降の処理(今回の場合は数値の画面出力)をスキップして次の繰り返し処理へ進みます。

while 文の場合は for 文と異なりブロックの最後まで処理が進むと、すぐに次の繰り返し処理が開始されます。 continue 文を実行した場合も同じようにすぐに新しい繰り返し処理へ入ります。

continue文の使い方(2)

このように繰り返し処理の中で continue 文を実行することで、繰り返し処理の残りの処理をスキップして新しい繰り返し処理へ進むことができます。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample10-1.java という名前で保存します。

class JSample10_1{
  public static void main(String[] args){
    for (int i = 1; i < 10; i++){
      if (i % 3 == 0){
        continue;
      }

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

    System.out.println("End");
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample10_1.java

その後で、次のように実行してください。

java JSample10_1

continue文の使い方(3)

数値を 1 から 9 まで画面に出力していますが、数値が 3 の倍数だった場合には continue 文を使って残りの処理をスキップし次の繰り返し処理へ進めています。

繰り返し処理が多重になっている場合

for 文や while 文のブロック内で continue 文が実行すると繰り返し処理の残りの処理をスキップして次の繰り返し処理へ進みますが、繰り返し処理が多重になっている場合に continue 文が実行された場合は continue 文を含む一番内側の繰り返し処理がスキップされます。

次のサンプルを見てください。

for (int i = 1; i < 5; i++){

  for (int j = 1; j < 5; j++){
    if (i * j % 3 == 0){
      continue;
    }

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

  System.out.println("Next");
}

System.out.println("End");

このサンプルでは for 文の中に別の for 文があります。内側の for 文の中で、変数 i と j を乗算した値が 3 の倍数だった場合に continue 文を実行します。 continue 文を実行すると繰り返し処理の残りの処理をスキップしますが、スキップするのは実行された continue 文を含む一番内側の for 文です。今回の場合であれば内側の continue 文の繰り返し処理の残りの処理を終了します。

繰り返し処理が多重になっている場合(1)

なお continue 文を実行したときに任意の繰り返し処理の残りの処理をスキップするには、このあと解説するラベル付き continue 文を使用します。

ラベル付きcontinue文

continue 文を実行すると continue 文を含む一番内側の繰り返し処理の残りの処理がスキップしますが、ラベル付きの continue 文にすることで任意の位置にある繰り返し処理の残りの処理をスキップして次の繰り返し処理へ進むことができます。ラベル付き continue 文の書式は次のとおりです。

continue ラベル;

あらかじめ次のようなラベル文を for 文や while 文の前に記述しておきます。そしてラベル付き continue 文を実行すると、指定したラベルが付けられた繰り返し処理の残りの処理がスキップします。

ラベル名:

※ ラベル名は変数名などと同じ識別子のルールに従った名前を付けてください。詳しくは「変数名のつけ方(識別子)」を参照されてください。

次のサンプルを見てください。

Outer:
for (int i = 1; i < 6; i++){

  Inner:
  for (int j = 1; j < 6; j++){
    if (i * j % 4 == 0){
      continue Outer;
    }

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

  System.out.println("Next");
}

System.out.println("End");

このサンプルでは for 文の中に別の for 文があります。外側の for 文には Outer 、内側の for 文には Inner というラベルを付けてあります。

内側の for 文の中で、変数 i と j を乗算した値が 4 の倍数だった場合に continue 文を実行します。 continue 文を実行すると繰り返し処理の残りの処理をスキップしますが、ラベル付き continue 文なのでスキップするのは continue 文で指定したラベルが付けられた外側の for 文です。

Outer: for (int i = 1; i < 6; i++){ Inner: for (int j = 1; j < 6; j++){ if (i * j % 4 == 0){ continue Outer; } System.out.println(i + " * " + j + " = " + i * j); } System.out.println("Next"); } System.out.println("End");

ラベル付きcontinue文(1)

なお continue 文が記述された一番内側の繰り返し処理をスキップする場合はラベルを指定する必要がありませんが、今回の場合であれば continue Inner と実行すれば Inner ラベルが付けられた内側の繰り返し処理をスキップします。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample10-2.java という名前で保存します。

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

    Outer:
    for (int i = 1; i < 6; i++){

      Inner:
      for (int j = 1; j < 6; j++){
        if (i * j % 4 == 0){
          continue Outer;
        }

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

      System.out.println("Next");
    }

    System.out.println("End");
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample10_2.java

その後で、次のように実行してください。

java JSample10_2

ラベル付きcontinue文(3)

二重の for 文を使って 2 つの変数の乗算結果を画面に出力していますが、演算結果が 3 の倍数だった場合にはラベル付き continue 文を使って外側の繰り返し処理の残りの処理をスキップして新しい繰り替え所知りへ進んでいます。

-- --

continue 文、およびラベル付き continue 文の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。