Javaの continue 文 をプログラミング初心者向けに、例題や図を交えて、さらにかみ砕いて詳しく説明します。
1. continue 文って何?
continue文は、**ループ処理の中で「今の回の残りをスキップして次の回に進む」**ための命令です。- 使えるループ:
for、while、do...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);
}
}
Javacontinue outer;で、外側ループの残り処理を飛ばして次の i に移ります。- ラベルを付けない場合は、
continueは内側ループだけに効きます。
6. よくある間違い
- ループ変数の更新位置に注意
int i = 0; while (i < 5) { if (i % 2 == 0) continue; // ←i++の前に書くと無限ループ i++; } - break と混同しない
breakはループ全体を抜けるcontinueは今の回だけスキップ
- ラベル付きは必要なときだけ
- 使いすぎるとコードが読みにくくなる
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 は次へ進む |
| 実務での利用例 | 無効データスキップ、フィルタ処理、入力検証、ログ制御など |
