CodeGym /コース /JAVA 25 SELF /ループ制御: 演算子 break と <...

ループ制御: 演算子 break と continue

JAVA 25 SELF
レベル 4, レッスン 4
使用可能

1. はじめに

しばしば、ループのすべての反復を最後まで回す必要はなく、途中で抜けたい場面があります。たとえば、目的の要素を見つけた瞬間です。別の場面では、処理の一部を飛ばして次のステップに進みたいこともあります (たとえば、データは読み込んだが、その後の処理はスキップしたい場合)。 これが、ループ内部のフロー制御です。

演算子 break と continue はまさにこのためにあります。これらがどのように動作し、実際の課題でどのように役立つのかを見ていきましょう。

2. 演算子 break: 「ストップ!」

理論と構文

演算子 break は、ループのどこにいても即座にそのループから抜けるために使われます。プログラムの実行が break に到達した瞬間にループは終了し、実行はループの直後の最初の行から続きます。


while (uslovie)
{
    if (kakoe-to_uslovie)
    {
        break;
    }
    // ループの残りのコード
}
while ループでの 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 が発動しなかった場合にだけ実行される
}
for ループでの continue の使用

例 3: 偶数をスキップする

範囲から奇数だけを出力したいとします。偶数はスキップします。


for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue; // 数が偶数なら、以下をスキップ!
    }
    System.out.println("奇数: " + i);
}
continue で偶数をスキップ

何が起きているか:
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 つのループで登場します。きっと使いこなすのが楽しくなるはずです。

1
タスク
JAVA 25 SELF, レベル 4, レッスン 4
ロック未解除
秘密のコードを探す 🔐
秘密のコードを探す 🔐
1
タスク
JAVA 25 SELF, レベル 4, レッスン 4
ロック未解除
良品の選別 📦
良品の選別 📦
1
タスク
JAVA 25 SELF, レベル 4, レッスン 4
ロック未解除
素数の判定 ❓
素数の判定 ❓
1
タスク
JAVA 25 SELF, レベル 4, レッスン 4
ロック未解除
日次売上の合計 💰
日次売上の合計 💰
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION