
Java入門|continue文で処理をスキップする
止めるのではなく、今回は飛ばす。continue文を覚えると、繰り返し処理をもっと細かくコントロールできる。
これまで、ループの流れを変える文としてbreak文を見てきました。break文は、繰り返し処理そのものを途中で終わらせるための文でしたね。
それに対して、今回学ぶcontinue文は、ループ全体を終わらせるのではなく、その回の残りの処理だけを飛ばして、次の繰り返しへ進むための文です。
たとえば、1回目から10回目まで順番に処理をしている途中で、「3回目だけは表示しない」「特定の条件に合うものだけは今回は飛ばす」といった動きにしたいことがあります。そんなときに役立つのがcontinue文です。
continue文を使うと、現在の繰り返しの中で、それ以降に書かれている処理を実行せずに、次の回へ進めます。break文のようにループ全体を抜けるわけではないので、処理をやめるのではなく、一部だけ飛ばすという感覚で理解するとわかりやすいです。
ここでは、continue文の基本の働き、break文との違い、サンプルプログラムの動き、使いどころや注意点まで、表や例を交えながらやさしく整理していきます。
continue文とは何か
continue文は、現在の繰り返しの残りの処理を中断して、次の繰り返しへ進む文です。
書き方はとてもシンプルです。
continue;この1文がループの中で実行されると、その回の後続処理は行われず、次の繰り返しへ移ります。
つまりcontinue文は、「この回はここまででよいので、次へ進もう」と指示する文です。
break文との違い
continue文はbreak文とよく似て見えますが、働きはかなり違います。
ここをしっかり区別しておくことが大切です。
| 文 | 役割 |
|---|---|
| break文 | ループ全体を終了して外へ抜ける |
| continue文 | その回の残りを飛ばして次の繰り返しへ進む |
たとえば、1から10までのループがあるとき、
- break文なら、条件に合った時点でループ自体が終わる
- continue文なら、その回だけを飛ばして、次の番号へ進む
という違いがあります。
continue文の基本イメージ
continue文は、if文と組み合わせて使うことが多いです。
形としては、次のようなイメージです。
for(くり返し){
if(飛ばしたい条件){
continue;
}
実行したい処理
}このように書くと、条件に合った回だけは処理をスキップし、それ以外の回は通常どおり処理を進められます。
サンプルプログラム
では、continue文の働きがよくわかるサンプルプログラムを見ていきましょう。
ファイル名:Sample11.java
import java.io.*;
class Sample11
{
public static void main(String[] args) throws IOException
{
System.out.println("何回目のお知らせを飛ばしますか?(1~10)");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int skip = Integer.parseInt(str);
for(int i = 1; i <= 10; i++){
// 指定した回数なら、この回の残りの処理を飛ばす
if(i == skip){
continue;
}
System.out.println(i + "回目のお知らせを表示しています。");
}
}
}実行結果の例
たとえば 3 を入力した場合は、次のようになります。
何回目のお知らせを飛ばしますか?(1~10)
3
1回目のお知らせを表示しています。
2回目のお知らせを表示しています。
4回目のお知らせを表示しています。
5回目のお知らせを表示しています。
6回目のお知らせを表示しています。
7回目のお知らせを表示しています。
8回目のお知らせを表示しています。
9回目のお知らせを表示しています。
10回目のお知らせを表示しています。この結果を見ると、3回目だけが表示されていないことがわかります。
このプログラムのしくみ
このコードでは、for文で1回目から10回目まで順番に処理しています。
ただし、if(i == skip) がtrueになったときには continue を実行するので、その回の後ろにある表示文は実行されません。
つまり、3を入力した場合は、
- 1回目は表示する
- 2回目も表示する
- 3回目はcontinueで飛ばす
- 4回目以降はまた表示する
という流れになります。
表で見る continue文の動き
3 を入力した場合の動きを表にすると、次のようになります。
| iの値 | i == skip | continue文 | 表示されるか |
|---|---|---|---|
| 1 | false | 実行されない | 表示される |
| 2 | false | 実行されない | 表示される |
| 3 | true | 実行される | 表示されない |
| 4 | false | 実行されない | 表示される |
| 5 | false | 実行されない | 表示される |
| 6 | false | 実行されない | 表示される |
| 7 | false | 実行されない | 表示される |
| 8 | false | 実行されない | 表示される |
| 9 | false | 実行されない | 表示される |
| 10 | false | 実行されない | 表示される |
このように、continue文はループ全体を止めているのではなく、その回の表示だけを飛ばしていることがよくわかります。
break文と並べて違いを見る
continue文を理解するには、break文との違いを並べて見るのがいちばんわかりやすいです。
break文のイメージ
for(int i = 1; i <= 10; i++){
if(i == 3){
break;
}
System.out.println(i);
}この場合、3になった時点でループそのものが終わるので、表示は1と2だけになります。
continue文のイメージ
for(int i = 1; i <= 10; i++){
if(i == 3){
continue;
}
System.out.println(i);
}こちらは3だけを飛ばして、4以降も続きます。
比較表
| 文 | 3のときの動き | 4以降 |
|---|---|---|
| break文 | ループ終了 | 実行されない |
| continue文 | その回を飛ばす | 実行される |
この違いはとても重要です。
continue文で「先頭に戻る」とはどういうことか
continue文の説明では、「ブロックの先頭に戻る」と表現されることがあります。
これは、ループの種類によって少し見え方が違いますが、基本的には次の繰り返しに進むという意味です。
for文なら、continue文が実行されたあと、
- その回の残りの処理をやめる
- for文の増減式へ進む
- 次の条件判定を行う
- 条件を満たしていれば次の回を始める
という流れになります。
そのため、「同じ回の続きをする」のではなく、「次の回へ切り替わる」と考えると理解しやすいです。

この図で特に伝えたいのは、continue文がループを終わらせるのではなく、その回の後半だけを飛ばすという点です。
注目するとよいポイントは次のとおりです。
| 注目点 | 意味 |
|---|---|
| continueのあとに次の回へ進む | ループ自体は続く |
| 後続処理を通らない | その回だけ一部をスキップする |
| 条件判定と組み合わせる | 飛ばす回を柔軟に決められる |
continue文はどんな場面で便利か
continue文は、特定の条件に当てはまるものだけを飛ばしたいときに便利です。
| 場面 | 使い方のイメージ |
|---|---|
| 特定の番号だけ表示しない | 3回目だけ飛ばす |
| 偶数だけ処理しない | 偶数のとき continue |
| 不要なデータだけ無視する | 条件に合わないデータを飛ばす |
| エラー値を一時的に除外する | 異常な値の回だけ処理しない |
つまりcontinue文は、「全部やめる必要はないけれど、この回だけは実行しない」という場面に向いています。
continue文を使うときの注意点
continue文は便利ですが、使い方によっては流れが見えにくくなることもあります。
そのため、「何を飛ばしているのか」を自分で説明できる形で書くことが大切です。
気をつけたい点
| 注意点 | 内容 |
|---|---|
| 何を飛ばしているか分かりにくい | continue の下にある処理を確認する |
| 多用すると読みにくい | 本当に必要な場面で使う |
| break文と混同しやすい | ループ終了ではなく次の回へ進むと意識する |
| 条件の位置が大事 | continue より前と後で何が行われるかが変わる |
たとえば、continue文より前に書かれた処理は実行されますが、continue文より後に書かれた処理はその回では実行されません。ここはとても重要です。
continue文の位置によって動きが変わる
continue文は、ループの中のどこに書くかによって、飛ばされる範囲が変わります。
たとえば、次のようなコードを考えてみます。
for(int i = 1; i <= 5; i++){
System.out.println("前半の処理");
if(i == 3){
continue;
}
System.out.println("後半の処理");
}この場合、3回目でも「前半の処理」は表示されます。
でも continue が実行されるので、「後半の処理」は表示されません。
つまりcontinue文は、それより後ろにある処理だけを飛ばすのです。
continue文を学ぶ意味
continue文を理解すると、ループ処理をより細かく調整できるようになります。
ただ最後まで実行するか、途中で全部やめるかだけではなく、
- この回だけ飛ばす
- 条件に合うものだけ除外する
- 不要な処理を省いて次へ進む
といった柔軟な流れが作れるようになるからです。
今回の内容では、continue文は
- その回の残りの処理を飛ばす
- ループ全体は終わらない
- 次の繰り返しへ進む
- break文とは役割が違う
という点が大切でした。
この考え方が身につくと、入力チェックや条件つきの反復処理など、実際のプログラムでもかなり自然にコードを書けるようになります。
