広告

手を動かして学ぶ Java入門 (continue文)

環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の continue文について学びます。

10分くらいで、さくっと終わる記事をめざしています。


シリーズ一覧

続きは近日公開予定!

はじめに

この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/9/25 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)

実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。

詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。

前回のおさらい

break文は、プログラミング言語のループ制御構造で用いられる文で、最も内側のfor文、while文、do-while文から脱出する。

前回の記事 では break文について学びました。

break文とは、繰り返し制御文 (while文や for文など) を終わらせるために使う「文」です。
一般的には、次のように if文とともに使うことが多いでしょう。

while (条件式1) {
    ... 処理A ...

    if (条件式2) {
        break;
    }
    ... 処理B ...
}

イメージ図2

continue文とは

continue文は、プログラミング言語のループで用いられる文である。

continue文とは、while文のループ処理を途中で スキップ させるための「文」です。
break文とは違い while文は終わりません。

通常、while文は、

while (条件式) {
    ループ文1
    ループ文2
    ループ文3
    ・
    ・
    ・
}

上記の条件式を 満たしている 間はループ文を実行し続けます。
ループ文は上から順番に実行されていきます。

しかし、例えば …

  • ループ文2を実行したあと、条件によってはループ文3以降はスキップしたい

と思うことがあるかもしれません。
そんなときに使えるのが continue文です。

continue文は、

continue;

と書きます。
「文」なので、末尾にセミコロン (;) が必要です。

一般的には、次のように if文とともに使うことが多いでしょう。

while (条件式1) {
    ... 処理A ...

    if (条件式2) {
        continue;
    }
    ... 処理B ...
}

イメージ図1

continue文を使うと、処理B は実行されずに、while の条件式1 の判定までスキップします。

フローチャート図にすると次のようになります。
(フローチャートとは、処理の流れを図にしたものです)

フローチャート1


それでは、プログラムで実際の動きを確認してみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

いかがでしたでしょうか? 「出力」のところに

a = 1
a = 3
a = 5

と表示されたら成功です。


【補足】

繰り返し制御文には、while文の他にも

  • for文
  • 拡張for文 (for-eachループ文)

があります。
もちろん、for文や 拡張for文でも continue文は使えます。

コードの解説

int a = 0;

while (a < 5) {
    a = a + 1;

    if (a % 2 == 0) {
        continue;
    }

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

それでは、先ほどのコードを少しずつ見ていきましょう。
まずは、変数 a を 0 で初期化します。

int a = 0;

次は while文です。

while (a < 5) {
    ...
}

条件式は a < 5 となります。
つまり、変数 a が 5 より小さければループは続く、ということですね。

ループ文の最初では、変数 a に 1 を足します。

while (a < 5) {
    a = a + 1;
    ^^^^^^^^^^ <--- この部分!
    ...
}

変数 a は、最初 0 だったので、

a = 0 + 1

となり、変数 a に 1 が代入されます。

次は if文です。

while (true) {
    ...
    if (a % 2 == 0) {
        ...
    }
    ...
}

if 文の条件式は a % 2 == 0 です。

% 記号は、割り算の「余り」を計算します。
数値を 2 で割って余りが 0 であれば偶数、余りが 1 であれば奇数と判定できます。

つまり、この条件式では、変数 a が偶数であるかを判定しているわけですね。

現在、変数 a は 1 なので奇数です。
よって、if文の { ... } は実行されません。

最後に、println メソッドで変数 a を表示します。

while (a < 5) {
    ...

    if (...) {
        ...
    }

    System.out.println("a = " + a);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- この部分!
}

結果は "a = 1" と表示されます。

さて、ループ文が終わったので、while文の先頭に戻ります。
変数 a は 1 なので、まだ a < 5 を満たしています。よってループは続きます。

while (a < 5) {
    ...
}

続いて、変数 a に 1 を足します。

while (a < 5) {
    a = a + 1;
    ^^^^^^^^^^ <--- この部分!
    ...
}

変数 a は 1 だったので、変数 a に 2 が代入されます。

さあ、変数 a は偶数なので、if文の条件式を満たします
よって、continue文が実行されます。

while (true) {
    ...
    if (a % 2 == 0) {
        continue;
        ^^^^^^^^^ <---- ★大事なポイント!
    }
    ...
}

通常、if文が終われば、if文の「次の文」が実行されます。
しかし、continue文を実行すると、以降の処理は すべてスキップ します。

while (a < 5) {
    ...

    if (a % 2 == 0) {
        continue; <--- この部分が実行されると…
    }

    System.out.println("a = " + a);
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- この部分はスキップされる!
}

スキップした結果、処理は while文の先頭に戻ります。
変数 a は 2 なので、a < 5 を満たしています。よってループは続きます。

そして 変数 a に 1 を足して … と繰り返していきます。

変数 a が、

  • 偶数のとき : if文で continue文 が実行される。
  • 奇数のとき : continue文は実行されない。(変数 aprintln メソッドで表示する)

となるわけですね。

結果、

a = 1
a = 3
a = 5

と表示されます。


応用問題

【問題】

プログラムを実行すると、

a = 1
a = 4
a = 7

と「出力」へ表示されるようにしてください。

プログラム中で書き換えてよいのは1か所です。
if文の条件式である ### の部分です。

if (###) {
    ^^^ <--- ★この部分
    continue;
}

例えば a % 2 != 0 のような感じで、書き換えてみてください。

それでは、下のプログラムの # の箇所を書き換えて「実行(Ctrl-Enter)」してみましょう。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

無事に、

a = 1
a = 4
a = 7

と出力されましたでしょうか?

もし解けなかった場合は、下記の回答例をご参照ください。

回答例

【コード】

public class Main {
    public static void main(String[] args) {
        int a = 0;

        while (a < 8) {
            a = a + 1;

            if (a % 3 != 1) {
                continue;
            }

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

【出力】

a = 1
a = 4
a = 7

まとめ

continue文とは、while文のループ処理を途中で スキップ させるための「文」です。
一般的には、次のように if文とともに使うことが多いでしょう。

while (条件式1) {
    ... 処理A ...

    if (条件式2) {
        continue;
    }
    ... 処理B ...
}

イメージ図1

continue文を使うことにより、ループ処理を簡潔に書けることもあります。
有効に活用してしていきたいですね。

それでは次回もお楽しみに。


関連記事

ページの先頭へ