Java入門⑩ break と continue ── くり返しを、抜ける・飛ばす

前回まで、for文・while文という「くり返し」をやってきました。

今回は、そのくり返しを途中でコントロールする2つの命令、break(ブレイク)continue(コンティニュー)です。

break は「くり返しを途中でやめる」、continue は「今回だけ飛ばして次へ」です。

なぜ、これが必要なのか

くり返しは便利ですが、ときどき「途中で抜けたい」「この回だけスキップしたい」ことがあります。

「探していて、目当てのものが見つかったら、もう探さなくていい」
「1から10まで処理するけど、偶数は飛ばしたい」

こういう細かいコントロールをするのが、break と continue です。

break ── 途中でやめる

break は、くり返しをその場で打ち切って、ループから抜け出します

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }
    System.out.println(i);
}

実行すると、1・2・3・4 だけ表示されます。

i が5になったとき、if (i == 5) が true になり、break が実行される。その瞬間、くり返し全体が終了。だから5以降は表示されません。

break、実は第7回のswitch文でも出てきましたね。あのときと同じ「ここで抜ける」という意味です。

break が活きる場面

break が本当に役立つのは、「目当てのものが見つかったら、もう探さなくていい」というときです。

for (int i = 1; i <= 100; i++) {
    if (i * i > 50) {
        System.out.println(i + " で初めて2乗が50を超えました");
        break;
    }
}

2乗が50を超える最初の数を探しています。見つかった瞬間に break で抜けるので、それ以降の無駄なくり返しをしません。「見つけたら、即終了」。効率のいい書き方です。

continue ── 今回だけ飛ばす

continue は、break と違います。くり返しをやめるのではなく、今回の処理だけスキップして、次のくり返しに進みます

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;
    }
    System.out.println(i);
}

実行すると、奇数だけ(1・3・5・7・9)が表示されます。

i % 2 == 0 は「2で割った余りが0」、つまり偶数という条件です(% は第4回の「余り」ですね)。偶数のとき continue が実行され、その回の表示をスキップして次へ。だから奇数だけが残りました。

break と continue の違い

ここがいちばん大事なところです。

  • break … くり返しを 完全にやめる。ループから抜け出す
  • continue … 今回だけ 飛ばして、くり返しは続ける

たとえるなら、break は「もう帰る」、continue は「今回はパスして、次へ」。

迷ったら、こう考えてください。
「もう用は済んだ。やめる」→ break
「今回はいらないけど、まだ続ける」→ continue

つまずきポイント

学生がよく混同するのが、この2つの違いです。「途中で抜けたいのに continue を使ってしまう」「1回飛ばしたいだけなのに break を使ってしまう」。

区別はシンプルです。ループ自体を終わらせるのが break、続けるのが continue。「帰る」のか「パスする」のか。ここさえ押さえれば、使い分けで困りません。

まとめ

break と continue は、くり返しをコントロールする命令。

  • break … くり返しを途中でやめて、抜け出す
  • continue … 今回だけ飛ばして、次のくり返しへ

「見つかったら終わり」なら break、「この回だけスキップ」なら continue。

これで、くり返し(for・while・break・continue)がひととおり揃いました。次回からは、たくさんのデータをまとめて扱う 配列 に進みます。