MENU

【Java】レッスン2-06:breakとcontinueでループを自在に制御しよう

tggaa478@yahoo.co.jp

一つ前のページではwhile文による繰り返し処理について学習しました。

今回は 繰り返しを制御 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編

 ・Lesson2-1:比較演算子と論理演算子を理解しよう
 ・Lesson2-2:if文による分岐処理を理解しよう
 ・Lesson2-3:switch文による分岐処理を理解しよう
 ・Lesson2-4:for文による繰り返し処理を理解しよう
 ・Lesson2-5:while文による繰り返し処理を理解しよう
 ・Lesson2-6:繰り返しを制御しよう ◁今回はココ
 ・Lesson2-7:配列を理解しよう
 ・Lesson2-8:エラーメッセージを読めるようになろう
 ・Lesson2-9:例外処理を理解しよう
 ・確認問題2-☆1:ハイアンドロー ゲームを作ろう
 ・確認問題2-☆2:数字当てゲームを作ろう
 ・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

Javaのbreak文とcontinue文の使い方を基礎から解説

繰り返し処理をしている中で、特定の条件に基づいて処理を中断したり、次の繰り返しに進めたい場合があります。

Javaにはこうした制御を行うためにbreak文とcontinue文が用意されています。

このページではbreakcontinueを使って繰り返しを効率的に制御する方法を解説します。

break文とは?|ループ処理を途中で終了させる方法

break文は繰り返し処理の中で条件を満たしたときに、処理を強制的に終了させたい場合に使用します。

これによりループ全体を途中で打ち切ることができます。

特に不要な処理を減らしたり、条件に基づいて早めに処理を終了させたい場合に役立ちます。

以下の例では1から10までの数値を繰り返し処理するコードとなっていますが、数値が5になった時点でbreak文によってループを終了しています。

public class BreakExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break; // iが5のとき、ループを終了する
            }
            System.out.println("数値: " + i);
        }
    }
}
// 実行結果:1 2 3 4

このコードではiが5になった時点でbreakが実行され、forループ全体が終了します。

これにより効率的に処理を制御できます。

continue文とは?|繰り返しの一部をスキップする方法

continue文は現在の繰り返しをスキップして、次の繰り返しに移行したいときに使用します。

条件を満たした場合のみ特定の処理を行わずに、次のループに進みます。

これにより特定の条件を避けたい場合に便利です。

以下の例は1から10までの数値を繰り返し処理するコードですが、偶数の場合にcontinue文を使用して、その数を表示せずに次の繰り返しに進みます。

public class ContinueExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue; // 偶数の場合、この繰り返しをスキップする
            }
            System.out.println("数値: " + i);
        }
    }
}
// 実行結果:1 3 5 7 9

このコードではiが偶数のときにcontinue文が実行され、その場合はSystem.out.printlnが実行されません。

こうした制御により条件を満たす場合にのみ処理をスキップできます。

whileループでも使える!breakとcontinueの応用例

次にwhileループでのbreakcontinueの使い方を見てみましょう。

どちらも繰り返し処理内で条件を基にした制御に非常に役立ちます。

public class BreakContinueExample {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 10) {
            if (i == 5) {
                break; // iが5になったらループを終了
            }
            if (i % 2 == 0) {
                i++;
                continue; // 偶数の場合、次の繰り返しへ
            }
            System.out.println("数値: " + i);
            i++;
        }
    }
}
// 実行結果:1 3

この例ではiが5になった時点でbreak文によってループが終了します。

またiが偶数の場合にはcontinueが実行され、偶数の数値は出力されません。

Javaの繰り返し処理をより柔軟に制御しよう|まとめ

break文とcontinue文は、Javaの繰り返し処理の中で制御を行うための重要な要素です。

breakはループ全体の終了に、continueは特定の繰り返しをスキップするために使います。

これらの使い方を理解することで、効率的なコードを記述することができるようになるでしょう。

練習問題|breakとcontinueを使ったユーザー入力によるループ制御プログラム

ユーザーから数値を入力してもらい、その数値に到達するとループを終了するプログラムを作成しましょう。

プログラムは1から20までの数値をループで表示しますが、3の倍数の場合は「○は3の倍数です」と表示し、それ以外の場合には通常通り「現在の数値: ○」と表示します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scannerクラスを使用して、ユーザーから数値(1から20の範囲)を入力してもらうこと。
  • forループを使い、1から20までの数値を表示するループを書くこと。
  • 入力された数値に到達した場合、break文を使ってループを終了すること。
  • 3の倍数の場合、「○は3の倍数です」と表示し、continue文を使って次のループに進むこと。
  • 3の倍数以外の場合には「現在の数値: ○」と表示すること。

ただし、以下のような実行結果となること。

ループを終了したい数値を入力してください(1から20の間):
7
ループの開始:
現在の数値: 1
現在の数値: 2
3は3の倍数です。
現在の数値: 4
現在の数値: 5
6は3の倍数です。
現在の数値: 7に到達しました。ループを終了します。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:Scannerクラスをインポート
2:BreakContinueExampleクラスの定義
  □ mainメソッドの定義
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「ループを終了したい数値を入力してください(1から20の間):」と出力
  □ □ ユーザーから入力を受け取り、変数stopNumberに代入
  □ □ 「ループの開始:」と出力
  □ □ forループを1から20まで繰り返すように設定
  □ □ □ if文で変数iがstopNumberに等しいか判定
  □ □ □ □ 真の場合、「iに到達しました。ループを終了します。」と出力
  □ □ □ □ break文でループを終了
  □ □ □ if文で変数iが3の倍数か判定
  □ □ □ □ 真の場合、「iは3の倍数です。」と出力
  □ □ □ □ continue文で次のループに進む
  □ □ □ 「現在の数値: i」と出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner; // Scannerクラスをインポート(ユーザーからの入力を受け取るため)

public class BreakContinueExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 入力用のScannerオブジェクトを生成
        System.out.println("ループを終了したい数値を入力してください(1から20の間):");
        
        /* 【穴埋め問題1】
           ここにscannerを使用してユーザーの入力を整数として受け取り、変数stopNumberに代入するコードを書いてください。
        */
        
        System.out.println("ループの開始:");
        
        /* 【穴埋め問題2】
           ここにforループを1から20まで繰り返す設定を書くコードを書いてください。
        */
        
            /* 【穴埋め問題3】
               ここにif文でiがstopNumberに等しい場合にループを終了するコードを書いてください。
            */
            
            /* 【穴埋め問題4】
               ここにif文でiが3の倍数か判定し、該当する場合にメッセージを表示し、次のループに進むコードを書いてください。
            */
            
            System.out.println("現在の数値: " + i); // 現在の数値を表示
    }
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
import java.util.Scanner; // Scannerクラスをインポート(ユーザーからの入力を受け取るため)

public class BreakContinueExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 入力用のScannerオブジェクトを生成
        System.out.println("ループを終了したい数値を入力してください(1から20の間):");
        int stopNumber = scanner.nextInt(); // ループ終了の数値を取得

        System.out.println("ループの開始:");
        for (int i = 1; i <= 20; i++) { // 1から20まで繰り返し
            if (i == stopNumber) {
                System.out.println(i + "に到達しました。ループを終了します。");
                break; // stopNumberに到達したらループを終了
            }
            if (i % 3 == 0) {
                System.out.println(i + "は3の倍数です。"); // 3の倍数のときのみメッセージを表示
                continue; // 3の倍数の場合、次の繰り返しへ進む
            }
            System.out.println("現在の数値: " + i); // 現在の数値を表示
        }
    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

Scannerのインポート

import java.util.Scanner;

Scannerクラスをインポートしています。

このクラスはユーザーからの入力を受け取るために使用され、標準入力(コンソール)からデータを読み取ります。

クラスとmainメソッドの定義

public class BreakContinueExample {
    public static void main(String[] args) {

BreakContinueExampleというクラスを定義し、Javaプログラムのエントリーポイントであるmainメソッドを定義しています。

この中にプログラム全体の処理を記述します。

Scannerオブジェクトの生成とユーザーの入力受付

Scanner scanner = new Scanner(System.in);
System.out.println("ループを終了したい数値を入力してください(1から20の間):");
int stopNumber = scanner.nextInt();

ここでScannerオブジェクトを生成し、ユーザーがループを終了したい数値を入力できるようにしています。

ユーザーの入力した数値はstopNumberという変数に格納されます。

ループの開始

System.out.println("ループの開始:");
for (int i = 1; i <= 20; i++) {

この部分ではforループを使ってiの値を1から20まで繰り返します。

ループの中ではbreakcontinueを使って特定の条件で制御を行います。

breakを使ったループの終了

if (i == stopNumber) {
    System.out.println(i + "に到達しました。ループを終了します。");
    break;
}

break文を使用してユーザーが指定したstopNumberに到達した際にループを強制的に終了しています。

breakは現在のループを完全に抜け出すために使用されます。

continueを使ったループのスキップ

if (i % 3 == 0) {
    System.out.println(i + "は3の倍数です。");
    continue;
}

ここではcontinue文を使って3の倍数である場合にメッセージを表示し、ループ内のそれ以降の処理をスキップして次の反復へ移ります。

continue文を使うことで現在のループの処理を終了し、次のループに移行できます。

通常の値の表示

System.out.println("現在の数値: " + i);

istopNumberや3の倍数でない場合、単純に現在の数値を表示します。

まとめ

このプログラムを通してJavaのbreakcontinueの使い方を学びました。

breakはループを完全に抜けるために使用され、continueは特定の条件で処理をスキップして次の反復に進むために使います。

これらの制御文を理解することで、より柔軟で効率的なコードが書けるようになります。

引き続き他の制御文やメソッドの使い方も学び、プログラミングの理解を深めていきましょう。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました