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

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

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

なぜ、これが必要なのか

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

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

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

break ── 途中でやめる

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

for (int i = 1; i <= 10; i++)
{
    if (i == 5)
    {
        break;
    }
    Console.WriteLine(i);
}

実行すると、こうなります。

1
2
3
4

1から10まで表示するつもりが、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)
    {
        Console.WriteLine(i + " で初めて2乗が50を超えました");
        break;
    }
}

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

continue ── 今回だけ飛ばす

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

for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue;
    }
    Console.WriteLine(i);
}

実行すると、こうなります。

1
3
5
7
9

奇数だけが表示されました。

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

break と continue の違い

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

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

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

同じ「途中で何かする」でも、ループ自体を終わらせるのか、続けるのか。ここが決定的に違います。

つまずきポイント

初心者がよく混同するのが、この2つの違いです。

「途中で抜けたいのに continue を使ってしまう」
「1回飛ばしたいだけなのに break を使ってしまう」

迷ったら、こう考えてください。

「もう用は済んだ。やめる」→ break
「今回はいらないけど、まだ続ける」→ continue

この区別さえつけば、使い分けで困ることはありません。

まとめ

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

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

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

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