Java | continue 文

Java Java
スポンサーリンク

Javaの continue をプログラミング初心者向けに、例題や図を交えて、さらにかみ砕いて詳しく説明します。


1. continue 文って何?

  • continue 文は、**ループ処理の中で「今の回の残りをスキップして次の回に進む」**ための命令です。
  • 使えるループ:forwhiledo...while
  • break は「ループを全部抜ける」ですが、continue は「今の回だけスキップ」です。

2. イメージ図(ASCII)

[ループ開始]
      |
      v
  [処理1]
      |
      v
  [条件判定]
   /       \
True         False
 |            |
 v            v
[continue]  [処理2]
 |            |
 v            v
[次の回へ] <-+
  • 条件が True の場合は continue に進み、後ろの処理2をスキップして次のループに行きます。

3. 基本的な使い方

例1:for文で奇数だけ表示する

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) { // 偶数なら
        continue;      // この回をスキップ
    }
    System.out.println(i + " は奇数です");
}
Java

解説

  • i が偶数のとき continue が実行されます。
  • System.out.println はスキップされるので、出力は奇数だけになります。

出力

1 は奇数です
3 は奇数です
5 は奇数です
7 は奇数です
9 は奇数です

例2:while文でも使える

int i = 0;
while (i < 10) {
    i++;
    if (i % 3 == 0) {
        continue; // 3の倍数はスキップ
    }
    System.out.println(i);
}
Java

ポイント

  • i++continue の前に置くこと。
  • これを間違えると無限ループになることがあります。

4. ネストしたループでの continue

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i == j) {
            continue; // 内側の j ループだけスキップ
        }
        System.out.println(i + "," + j);
    }
}
Java

解説

  • (1,1), (2,2), (3,3) はスキップされます。
  • 内側のループの残り処理だけがスキップされ、外側ループには影響しません。

5. ラベル付き continue (外側ループをスキップ)

outer:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        if (i * j % 4 == 0) {
            continue outer; // 外側のループ i を次に進める
        }
        System.out.println(i + "," + j);
    }
}
Java
  • continue outer; で、外側ループの残り処理を飛ばして次の i に移ります。
  • ラベルを付けない場合は、continue は内側ループだけに効きます。

6. よくある間違い

  1. ループ変数の更新位置に注意 int i = 0; while (i < 5) { if (i % 2 == 0) continue; // ←i++の前に書くと無限ループ i++; }
  2. break と混同しない
    • break はループ全体を抜ける
    • continue は今の回だけスキップ
  3. ラベル付きは必要なときだけ
    • 使いすぎるとコードが読みにくくなる

7. 練習問題

練習問題 1

問題:
1~10までの数字を順に出力する。ただし、偶数のときは出力せずスキップせよ。

✅ 解答

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue;  // 偶数ならスキップ
            }
            System.out.println(i);
        }
    }
}
Java

💡 解説

  • continue に出会うと、その回の処理を中断して次のループに進む
  • この例では偶数のとき continue が実行されるため、
    System.out.println(i); は実行されません。
  • 結果として出力されるのは: 1 3 5 7 9

練習問題 2

問題:
1~20のうち、3の倍数を除いてすべての数を出力するプログラムを作成せよ。

✅ 解答

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 20; i++) {
            if (i % 3 == 0) {
                continue;
            }
            System.out.print(i + " ");
        }
    }
}
Java

💡 解説

  • i % 3 == 0(3で割り切れる)ときに continue でスキップ。
  • 出力結果: 1 2 4 5 7 8 10 11 13 14 16 17 19 20
  • 「スキップの条件」を変えるだけで柔軟に制御できるのが continue の強みです。

練習問題 3(少し実務寄り)

問題:
以下の配列から、null または空文字のデータをスキップして出力せよ。

String[] names = {"Alice", "", "Bob", null, "Charlie"};
Java

✅ 解答

public class Main {
    public static void main(String[] args) {
        String[] names = {"Alice", "", "Bob", null, "Charlie"};

        for (String name : names) {
            if (name == null || name.isEmpty()) {
                continue;  // 無効なデータをスキップ
            }
            System.out.println(name);
        }
    }
}
Java

💡 解説

  • 実務では、nullチェック+空文字チェックを頻繁に行います。
  • continue により「不正データを飛ばして正常データのみ処理」できます。
  • 出力結果: Alice Bob Charlie
  • ログ処理やCSV入力などでよく使われるパターンです。

まとめ

  • continue は「今の回の残りをスキップして次へ」
  • ネストしたループでは内側だけに効く
  • ラベルを付けると外側ループにも適用可能
  • break とは役割が違う
  • 更新処理や無限ループに注意
ポイント説明
continue の動きそのループの残りの処理をスキップして次の繰り返しへ進む
break との違いbreak はループを完全に抜けるcontinue次へ進む
実務での利用例無効データスキップ、フィルタ処理、入力検証、ログ制御など
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました