Java break文:使い方、ラベル付きbreak、ネストループでの制御
Java break文
このチュートリアルでは、Java break文の構文と、正確なループ制御のためのラベル付きbreakの使い方を説明します。
ループを扱うとき、反復の残りの文をスキップしたり、ループ条件を再評価せずにループ全体を終了したりする必要がある場合があります。breakとcontinue文がその制御を提供します。次のチュートリアルではcontinueを扱います。
break文は、最も内側のループまたはswitch構造を即座に終了し、プログラム実行は終了したブロックの後の文から継続されます。
これは通常、if…elseなどの条件論理と組み合わせて早期終了ポイントを作成するために使用されます。
構文:
break;
break文の仕組み

例1: forループでのbreak使用
class Test {
public static void main(String[] args) {
// forループ
for (int i = 1; i <= 10; ++i) {
// iの値が5ならループ終了
if (i == 5) {
break;
}
System.out.println(i);
}
}
}
出力:
1 2 3 4
ループは1から4の値を出力します。ifブロックでiをチェックし、5と等しくなるとbreakでループを停止します。
例2: ユーザー入力でのwhileループでのbreak
ここでは、ユーザーが負の数を入力するまで入力された数値を合計します。
入力読み取りにはScannerを使用します。ScannerについてはJava Scannerチュートリアルを参照してください。
import java.util.Scanner;
class UserInputSum {
public static void main(String[] args) {
Double number, sum = 0.0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("数値を入力: ");
number = input.nextDouble();
if (number < 0.0) {
break;
}
sum += number;
}
System.out.println("合計 = " + sum);
}
}
出力:
数値を入力: 3.2 数値を入力: 5 数値を入力: 2.3 数値を入力: 0 数値を入力: -4.5 合計 = 10.5
while (true)ループは負の値が入力されbreakが実行されるまで無限に実行されます。
ネストループでのbreak
ネストループでは、breakは最も内側のループのみを終了します。

図は、内側のwhile内のbreakが外側のループにジャンプすることを示しています。
ラベル付きbreak文
単純なbreakに加えて、Javaは外側のループを直接終了できるラベル付き変種を提供します。これは複数レベルのネストループを終了する必要がある場合に便利です。

ラベルはループの前に置かれ、break label;でそのループを終了し、その後の文にジャンプします。
while (testExpression) {
// コード
second: while (testExpression) {
// コード
while(testExpression) {
// コード
break second;
}
}
// 制御はここにジャンプ
}
break second;が実行されると、secondとマークされたループが終了し、制御はそのループの後に再開されます。
例3: ラベル付きbreakの使用
class LabeledBreak {
public static void main(String[] args) {
first: for (int i = 1; i < 5; i++) {
second: for (int j = 1; j < 3; j++) {
System.out.println("i = " + i + "; j = " + j);
if (i == 2) break first;
}
}
}
}
出力:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1
ここでは、break first;が外側のforループを終了するため、3行目出力後にプログラムが停止します。
break first;をbreak second;に置き換えると、内側のループのみが終了し、外側のループは継続します。
class LabeledBreak {
public static void main(String[] args) {
first: for (int i = 1; i < 5; i++) {
second: for (int j = 1; j < 3; j++) {
System.out.println("i = " + i + "; j = " + j);
if (i == 2) break second;
}
}
}
}
出力:
i = 1; j = 1 i = 1; j = 2 i = 2; j = 1 i = 3; j = 1 i = 3; j = 2 i = 4; j = 1 i = 4; j = 2
注意: break文はswitchケースも終了します。詳細については、Java switch文チュートリアルを参照してください。
Java
- C# switch 文をマスターする:構文、例、ベストプラクティス
- C# break 文:使い方とタイミングを徹底解説
- C# continue 文をマスターする:ループ反復を効果的にスキップする方法
- C++ switch文をマスター:構文、使い方、実践例
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例