1. はじめに
しばしば、ループのすべての反復を最後まで回す必要はなく、途中で抜けたい場面があります。たとえば、目的の要素を見つけた瞬間です。別の場面では、処理の一部を飛ばして次のステップに進みたいこともあります (たとえば、データは読み込んだが、その後の処理はスキップしたい場合)。 これが、ループ内部のフロー制御です。
演算子 break と continue はまさにこのためにあります。これらがどのように動作し、実際の課題でどのように役立つのかを見ていきましょう。
2. 演算子 break: 「ストップ!」
理論と構文
演算子 break は、ループのどこにいても即座にそのループから抜けるために使われます。プログラムの実行が break に到達した瞬間にループは終了し、実行はループの直後の最初の行から続きます。
while (uslovie)
{
if (kakoe-to_uslovie)
{
break;
}
// ループの残りのコード
}
for や do-while でも同様に動作します:
for (int i = 0; i < 10; i++)
{
if (kakoe-to_uslovie)
{
break;
}
// ループの残りのコード
}
例 1: 数が素数かどうかの判定
数は 1 と自分自身でしか割り切れないとき素数です。数が素数かどうかを調べるには、2 から n-1 までの可能な約数を調べます。もしどれかで割り切れたら、それ以上調べる必要はありません。素数ではありません。ループを終了できます。
例:
int number = 111;
boolean found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
System.out.println("約数を見つけた: " + i );
break; // ここでループを止める。これ以上探す必要はない!
}
}
if (!found)
{
System.out.println("約数は見つかりません。数は素数です。");
}
例 2: ユーザー入力のバリデーション
小さなアプリ、たとえばデータ収集のための対話式アンケートを書いてみましょう:
while (true)
{
System.out.print("年齢を入力してください: ");
if (console.hasNextInt())
{
int age = console.nextInt();
if (age > 0)
{
System.out.println("すばらしい!あなたの年齢: " + age);
break; // 入力は正しいので、ここで抜ける
}
else
{
System.out.println("エラー!正の年齢を入力してください。");
}
}
else
{
System.out.println("エラー!数値を入力してください。");
console.nextLine(); // 不正な入力を読み捨てる
}
}
なぜ必要か:
ユーザーが正しいデータを入力するまで、無限 (または非常に長く) にループを回し続けたい場合があります。望む条件が満たされた瞬間に break を使って最終的にループを抜けます。
3. 演算子 continue: 「次の方、どうぞ!」
理論と構文
break と異なり、演算子 continue はループ全体を終了しません。現在の反復だけを中断します。つまり、ループ本体の中で continue の後に書かれている部分は実行されず、次の反復へ進みます。
for (int i = 0; i < 10; i++)
{
if (uslovie)
{
continue;
}
// この下は continue が発動しなかった場合にだけ実行される
}
例 3: 偶数をスキップする
範囲から奇数だけを出力したいとします。偶数はスキップします。
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 数が偶数なら、以下をスキップ!
}
System.out.println("奇数: " + i);
}
何が起きているか:
i = 2, 4, 6... のとき、ループは continue に到達した時点で直ちに次の反復に進み、System.out.println は実行されません。
ステップごとの動きの可視化:
| i | i % 2 == 0 | 動作 |
|---|---|---|
| 1 | false | print、continue なし |
| 2 | true | continue、print なし |
| 3 | false | print、continue なし |
| ... | ... | ... |
演算子 break と continue は非常によく使われます。実際、ほぼ 2 つに 1 つのループで登場します。きっと使いこなすのが楽しくなるはずです。
GO TO FULL VERSION