スライドショースライドショー

【3分で解決Java】for文のループ制御(breakとcontinue)

こんにちは!エンジニアの中沢です。

プログラミングをしているとループ処理を行うことってよくありますよね。ループ処理を記述していて、

ループ処理を途中で抜けたい
二重ループで外側のループまで抜けたい
ラベル付きbreak文の使い方を知りたい
ループ処理をスキップしたい

などで悩むことはありませんか?

今回はそんな悩みを解決するbreak文continue文についてです。

この記事では、break文とcontinue文について

  • break文とcontinue文
  • for文のループをbreak文で抜ける方法
  • for文のループをcontinue文でスキップする方法
  • という基本的な内容から

  • ラベル付きbreak文で2重ループを抜ける方法
  • 拡張for文やiteratorのループ処理
  • などの応用的な内容についても解説していきます。

    この記事では、for文のループをbreak文で抜ける方法や、continue文でスキップする方法をわかりやすく解説します!

    break文とcontinue文

    初めにbreak文とcontinue文について解説します。

    break文とは

    break文はループ処理を中断して、途中で抜けるときに使用します。break文は最も内側の1つのループから抜け出します

    多重ループの外側まで抜ける場合は、ラベル付きbreak文を使います。

    continue文とは

    continue文はループ処理の途中で、残りの処理をスキップして次のループ処理に移るときに使います。

    break文はループ処理全体を終わらせてしまうのに対して、continue文は残りの処理をスキップした後に次のループ処理を開始するという違いがあります。

    continue文は最も内側の1つのループをスキップします。多重ループのネストの外側までスキップする場合には、ラベル付continue文を使います。

    for文のループをbreak文で抜ける方法

    ここではfor文のループをbreak文で抜ける方法を解説します。for文のループをbreak文で抜けるには下記のように記述します。

    break文の記述例:

    for (式) {
        if (条件式) {
            処理内容;
            break;
        }
    }

    条件式が真の場合break文が実行されるので、そこでループ処理を中断してループから抜け出します。

    break文の使い方を覚えるために次のプログラムで確認してみましょう。

    public class Main {
     
        public static void main(String[] args) {
            String[] strArray = { "s", "a", "m", "u", "r", "a", "i" };
            String str = "a";
             
            for (int i = 0; i < strArray.length; i++) {
                if (strArray[i].equals(str)) {
                    System.out.println(str + "のインデックス番号 = " + i);
                    break;
                }
            }
        }
     
    }

    実行結果:

    aのインデックス番号 = 1

    このプログラムでは、文字列の配列から"a"が見つかるまでループ処理をしています。1番目の"a"が見つかった時点でbreak文を使ってループを抜けているので、配列の中の2番目の"a"の位置は表示されません。

    このようにbreak文を使ってループ処理から抜け出すことができています!

    ラベル付きbreak文で2重ループを抜ける方法

    ここでは多重ループをラベル付きbreak文で抜ける方法を解説します。ラベル付きbreak文で2重ループを抜けるには下記のように記述します。

    二重ループをラベル付きbreak文で抜ける記述例:

    ラベル: for (式1) {
        for (式2) {
            if (条件式) {
                処理内容
                break ラベル; // ラベル付きbreak文
            }
        }
    }

    ラベル付きbreak文を使うと、同じラベルをつけたfor文の外までループを抜けます。この場合はラベルが付いたfor文すなわち式1のfor文のループから抜け出します。

    次のプログラムで確認してみましょう。

    public class Main {
     
        public static void main(String[] args) {
            String[] strArray1 = { "s", "a", "m", "u", "r", "a", "i" };
            String[] strArray2 = { "e", "n", "g", "i", "n", "e", "e", "r" };
            String str1 = "a";
            String str2 = "e";
             
            // ラベル
            loop: for (int i = 0; i < strArray1.length; i++) {
                for (int j = 0; j < strArray2.length; j++) {
                    if (strArray1[i].equals(str1) && strArray2[j].equals(str2)) {
                        System.out.println(str1 + "のインデックス番号 = " + i);
                        System.out.println(str2 + "のインデックス番号 = " + j);
                        break loop; // ラベル付きbreak文
                    }
                }
            }
        }
     
    }

    実行結果:

    aのインデックス番号 = 1
    eのインデックス番号 = 0

    このプログラムでは2重ループで2つの配列から目的の文字をそれぞれ探しています。

    目的の文字が見つかった時点でラベル付きbreak文を使って2重ループを抜けているので、配列の中の2番目の文字の位置は表示しません。

    このようにラベル付きbreak文を使って多重ループから抜け出すことができています!

    for文のループをcontinue文でスキップする方法

    次はfor文のループをcontinue文でスキップする方法を解説します。for文のループをcontinue文でスキップするには下記のように記述します。

    continue文の記述例:

    for (式) {
        if (条件式) {
            continue;
        }
        処理内容;
    }

    条件式が真の場合continue文が実行され、ループ処理がスキップされ実行されません

    continue文の使い方を覚えるために次のプログラムで確認してみましょう。

    public class Main {
     
        public static void main(String[] args) {
            String[] strArray = { "s", "a", "m", "u", "r", "a", "i" };
            String str = "a";
             
            for (int i = 0; i < strArray.length; i++) {
                if (!strArray[i].equals(str)) {
                    continue;
                }
                System.out.println(str + "のインデックス番号 = " + i);
            }
        }
     
    }

    実行結果:

    aのインデックス番号 = 1
    aのインデックス番号 = 5

    このプログラムでは文字列が”a”以外のときに、continue文で表示する処理をスキップしています。continue文でループ処理をスキップする方法が確認できています!

    なお、continue文についてもbreak文と同じ様にラベル付きcontinue文を使うことができます。ラベル付きcontinu文などの詳しい説明についてはこちらを参考にしてくださいね!

    【Java入門】for文をcontinue文でスキップする(ラベルも解説)
    更新日 : 2019年5月9日

    拡張for文やiteratorのループ処理

    拡張for文iteratorのループ処理について詳しく知りたいときはこちらの記事を参考にしてください!

    【3分でわかるJavaの基礎】List内のデータをfor文で処理する方法(iterator)
    更新日 : 2017年6月7日

    for文の使い方総まとめ

    for文についてさらに詳しく知りたいときはこちらの記事を確認してください!

    【Java入門】for文、拡張for文、forEachの使い方
    更新日 : 2019年6月25日

    まとめ

    ここでは、break文やcontinue文について解説してきましたがいかがでしたか?

    ラベル付きbreak文で2重ループを抜ける場合、ラベルの位置を間違えると期待通りにループを抜けられないので注意してくださいね。

    もしfor文のループをbreak文で抜ける方法やcontinue文でスキップする方法を忘れてしまったらこの記事を確認してください!

    LINEで送る
    Pocket

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    中沢 丈

    中沢 丈

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説