ループの途中で抜ける考え方
「同じ処理を何回も繰り返す」のがループです。けれど、ある条件を満たしたら「もう続けなくていい、ここで止めたい」と思うことがあります。そのとき使うのが break(ブレーク)です。逆に、「今の1回だけスキップして次の繰り返しへ進みたい」ときは continue(コンティニュー)を使います。
break の基本
- 役割: ループ(for / while / do-while)を「今すぐ終了」してループの外へ出る
- 書き方:
break; - 効き方: 実行された「一番内側のループ」だけが終わる
例1:合計が一定値を超えたら止める
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i; // 1から順に足していく
if (sum > 50) {
break; // 合計が50を超えたらループ終了
}
}
System.out.println("sum = " + sum); // どこで止まったか確認
Java- ポイント: 「条件を満たした瞬間に終了」するので、ムダな繰り返しをしない
例2:検索で見つかったら即終了
int[] arr = {3, 9, 12, 7, 21};
int target = 7;
boolean found = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
found = true;
System.out.println("見つけた位置: " + i);
break; // 見つけたら終了
}
}
if (!found) {
System.out.println("見つかりませんでした");
}
Java- ポイント: 見つかったらそれ以上探さないので効率的
continue の基本(break との違い)
- 役割: ループ自体は続けるが、「今の回の残り処理」をスキップして次の繰り返しへ
- 書き方:
continue; - 使い分け:
- break = ループを終わる
- continue = 今回だけ飛ばして次へ
例3:偶数だけ表示(奇数はスキップ)
for (int i = 1; i <= 10; i++) {
if (i % 2 == 1) {
continue; // 奇数のときは残りをスキップ
}
System.out.println(i); // 偶数だけ表示される
}
Java- ポイント: 条件に合わないデータを「処理対象から外す」場面で便利
無限ループと break
「回数が決められないけど、条件を満たしたら終わりたい」なら、while(true)+break の組み合わせが分かりやすいです。
例4:入力値が「exit」なら終了
java.util.Scanner sc = new java.util.Scanner(System.in);
while (true) {
System.out.print("文字を入力してください(exitで終了): ");
String s = sc.nextLine();
if (s.equals("exit")) {
break; // ここでループを抜ける
}
System.out.println("入力: " + s);
}
System.out.println("プログラムを終了します");
Java- ポイント: 「終わるタイミングが入力次第」でも、安全に抜けられる
ネスト(入れ子)ループとラベル付き break
break は「一番内側のループ」だけに効きます。外側のループまで一気に終わりたいときは「ラベル付き break」を使います。
例5:外側のループごと終わらせる
Outer:
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
int product = i * j;
System.out.println(i + " * " + j + " = " + product);
if (product > 10) {
break Outer; // Outerラベルのforを終了(外側まで抜ける)
}
}
}
System.out.println("終了");
Java- ポイント: ラベル名(ここでは Outer)は慣例で先頭大文字が多いですが任意です
よくあるつまずきポイント
- break の効き先: 「一番内側のループのみ」。if を抜けるわけではない(if はループではない)
- continue の勘違い: ループ終了ではない。「今回の残り処理だけスキップ」
- 条件の位置: break/continue を書く位置が早すぎる/遅すぎると意図通りに動かない
- 無限ループの抜け道: while(true) を使うなら「必ず break の到達可能な条件」を用意する
練習(解答付き)
練習1:最初に3の倍数が見つかったら終了
- 目標: 配列から最初の3の倍数を見つけて、その値と位置を表示。見つかったら即 break。
int[] nums = {2, 5, 11, 9, 14, 18};
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 3 == 0) {
System.out.println("最初の3の倍数: " + nums[i] + "(位置 " + i + ")");
break;
}
}
Java練習2:負の数が来たら合計をやめる
- 目標: 入力された整数を順に合計。負の数が入力されたら合計を表示して終了。
java.util.Scanner sc = new java.util.Scanner(System.in);
int sum = 0;
while (true) {
int x = sc.nextInt();
if (x < 0) {
break; // マイナスが来たら終了
}
sum += x;
}
System.out.println("合計 = " + sum);
Java練習3:1〜50で7を含む数はスキップして表示
- 目標: 17, 27, 37, 47 など「7を含む数」を continue で飛ばす。
for (int i = 1; i <= 50; i++) {
String s = Integer.toString(i);
if (s.contains("7")) {
continue; // 7を含む数字はスキップ
}
System.out.println(i);
}
Java直感で覚えるコツ
- break: 「もう、今すぐ外へ出たい!」(ループ終了)
- continue: 「今回はパス、次の人どうぞ」(次の繰り返しへ)
