0Pricing
Java Academy · レッスン

breakとcontinue

反復をスキップしたり終了したりします。

「breakとcontinue」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

ループを制御する理由

ループはコードを繰り返し実行しますが、途中で停止したり、項目を1つスキップしたりしたい場合もあります。

Java には、そのための簡単なツールが2つあります。break はループを完全に終了し、continue は次の繰り返しへスキップします。

このレッスンでは、それぞれが正確にいつ実行され、ループの流れをどのように変えるのかを学びます。

break 文

break キーワードは、最も内側にあるループを直ちに停止します。

実行はループの直後にある最初の行へ移ります。残りの繰り返しはすべて中止されます。

次の例では、i が 3 に達するとすぐにループが停止します。

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                break;
            }
            System.out.println("i = " + i);
        }
        System.out.println("Done");
    }
}

break が出力した内容

プログラムは i = 1 と i = 2 を出力してから、Done を出力しました。

i が 3 になったときに break が実行されたため、3、4、5 は出力されませんでした。

必要なものが見つかり、検索を停止したい場合に break は最適です。

continue 文

continue キーワードは、現在の繰り返しの残りの処理をスキップします。

ループ自体は停止しません。ループヘッダーへ戻り、次の値で処理を続けます。

ここでは数値 3 をスキップしながら処理を続けます。

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                continue;
            }
            System.out.println("i = " + i);
        }
    }
}

continue が出力した内容

出力は 1、2、4、5 でした。値 3 はスキップされましたが、ループは実行を続けました。

これが重要な違いです。break はループから抜けますが、continue は1回分の処理だけをスキップします。

偶数のスキップ

continue の一般的な用途はフィルタリングです。必要のない値をスキップします。

このループでは、数値が偶数になるたびに continue することで、奇数だけを出力します。

public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 8; i++) {
            if (i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }
    }
}

while ループでの break

break と continue は、for、while、do-while のすべてのループ形式で使えます。

この while ループはカウントアップしますが、合計が 10 を超えた瞬間に抜けます。

public class Main {
    public static void main(String[] args) {
        int total = 0;
        int n = 1;
        while (true) {
            total += n;
            if (total > 10) {
                break;
            }
            n++;
        }
        System.out.println("Stopped at total = " + total);
    }
}

break が終了するのは1つのループだけ

重要なルールがあります。通常の break が終了するのは、それを囲むループのうち最も内側にあるものだけです。

ループの中に別のループがある場合、break は内側のループから抜けます。外側のループは実行を続けます。

次のネストされた例を注意深く見てください。

public class Main {
    public static void main(String[] args) {
        for (int row = 1; row <= 3; row++) {
            for (int col = 1; col <= 3; col++) {
                if (col == 2) {
                    break;
                }
                System.out.println("row " + row + ", col " + col);
            }
        }
    }
}

ネストされた break の結果

break は内側の列ループだけを停止したため、各行には col 1 だけが出力されました。

外側の行ループは3行すべてについて実行を続けました。

両方のループから同時に抜けるには、ラベル付き break が必要です。これは次のレッスンで学びます。

continue も最も近いループに作用する

break と同様に、通常の continue が作用するのは、それを直接囲むループだけです。

ネストされたループでは、continue は外側のループではなく、内側のループの次の繰り返しへ移ります。

2つのループにまたがるロジックを書くときは、この点を覚えておいてください。

public class Main {
    public static void main(String[] args) {
        for (int a = 1; a <= 2; a++) {
            for (int b = 1; b <= 3; b++) {
                if (b == 2) {
                    continue;
                }
                System.out.println(a + "-" + b);
            }
        }
    }
}

簡単なイメージ

ループを、周回するトラックだと考えてみましょう。

break =トラックを離れて立ち去る。continue =次の周回のスタートラインまで先に進む。

どちらも現在いるトラックにだけ作用し、その外側のトラックには作用しません。

理解度チェック

break と continue の違いについて理解できているか確認しましょう。

まとめ

break は最も近いループを終了し、continue はそのループの次の繰り返しへスキップすることを学びました。

ネストされたループでは、どちらも最も内側のループにだけ作用します。外側のループを制御するにはラベルが必要です。次はラベルについて学びます。

よくある質問

「breakとcontinue」レッスンは無料ですか?

はい。「breakとcontinue」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「breakとcontinue」で何を学びますか?

反復をスキップしたり終了したりします。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「breakとcontinue」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. breakとcontinue
  2. ラベル付きbreak
  3. ラベル付きcontinue
  4. スパゲッティな処理フローを避ける
← Java Academyに戻る