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

一つ前のページでは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
文が用意されています。
このページではbreak
とcontinue
を使って繰り返しを効率的に制御する方法を解説します。
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
ループでのbreak
とcontinue
の使い方を見てみましょう。
どちらも繰り返し処理内で条件を基にした制御に非常に役立ちます。
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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント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」と出力
- ヒント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); // 現在の数値を表示 } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
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); // 現在の数値を表示 } } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
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まで繰り返します。ループの中では
break
やcontinue
を使って特定の条件で制御を行います。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);
i
がstopNumber
や3の倍数でない場合、単純に現在の数値を表示します。
まとめ
このプログラムを通してJavaのbreak
とcontinue
の使い方を学びました。
break
はループを完全に抜けるために使用され、continue
は特定の条件で処理をスキップして次の反復に進むために使います。
これらの制御文を理解することで、より柔軟で効率的なコードが書けるようになります。
引き続き他の制御文やメソッドの使い方も学び、プログラミングの理解を深めていきましょう。