Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのbreak文とは?基本構文からラベル付きbreakまで徹底解説

Javaのbreak文は、ループの実行を中断するための制御構文です。break文が実行されると、プログラムはその直後にあるコードへ処理を移します。なお、ネストされた(入れ子になった)ループ内でbreak文を使用した場合、終了するのは最も内側のループのみです。

Javaのfor文やwhile文は、反復的な処理を自動化するために使われます。これらのループを扱っていると、「特定の条件が満たされた時点でループを抜けたい」という場面が出てきます。そんなときに役立つのがJavaのbreak文です。break文を使うことで、ループを完全に停止させることができます。

この記事では、break文を使ってJavaのループの流れを制御する方法を解説し、実際のサンプルコードも交えて紹介します。

Javaのbreak文とは

Javaのbreak文は、ループの実行を中断します。break文が実行されると、インタプリタはループの次にあるステートメントへ処理を進めます。ループ内で特定の条件が満たされたときに、そこでループを止めたい場合にbreak文は非常に便利です。

break文の構文は以下の通りです。

break;

break文は単独で使われるキーワードであり、関数ではないため引数を受け取りません。break文が実行されると、プログラムは現在のループの残りの処理をスキップして抜け出します。

break文の使用例:数当てゲーム

ここでは、「1から10までの数字を当てる」数当てゲームのプログラムを作成してみましょう。

ユーザーが正しい数字を当てた場合は、お祝いのメッセージを表示します。間違えた場合は、最大5回まで再び数字を入力できるようにします。

このプログラムのコードは以下のように書けます。

import java.util.Scanner;

class GuessingGame {
	public static void main(String[] args) {
		int number = 6;
		Scanner input = new Scanner(System.in);

		for (int i = 0; i <= 5; i++) {
			System.out.print("Guess a number between 1 and 10: ");
			guess = input.nextInt();

			if (guess == number) {
				System.out.println("You're correct!");
				break;
			}
		}
	}
}

このコードの実行結果は以下のようになります。

Guess a number between 1 and 10: 1
Guess a number between 1 and 10: 6
You're correct!

正しい数字が入力されるまで、プログラムは繰り返し数字の入力を求めます。

5回入力しても正解しなければ、プログラムは終了します。一方、ユーザーが正しい数字を当てた場合は、コンソールに「You're correct!」と表示され、break文によってループが即座に終了します。

コードの解説

それでは、コードの内容を順番に見ていきましょう。まず、java.util.Scannerライブラリをインポートしてユーザー入力を受け取れるようにし、GuessingGameというクラスを定義しています。その後、プログラムは以下の手順で動作します。

  1. numberという変数を宣言します。この変数には、ユーザーが当てるべき正解の数字が格納されます。
  2. Scanner inputでユーザー入力を初期化し、プログラム内でユーザーの回答を取得できるようにします。
  3. iが5より大きくなるまで実行されるforループを作成します。これにより、ユーザーには5回のチャンスが与えられます。
  4. コンソールに「Guess a number between 1 and 10:」というメッセージを表示します。
  5. input.nextInt()でユーザーの入力を受け取り、新しい変数guessに格納します。
  6. ユーザーの入力値が、正解を格納したnumber変数と一致するかどうかを比較します。
  7. guessnumberと一致していれば、コンソールに「You're correct!」と表示し、その後break文によってループの実行を終了します。
  8. 一致しなかった場合は、iが5より大きくなるまでforループが継続します。

このように、break文は実行された瞬間にfor文やwhile文のループを即座に終了させます。

ネストされたループでのbreak文

break文は、Javaプログラムにおける「最も内側のループ」だけを終了させます。例えば、forループの中にwhileループがあり、break文がwhileループの中にある場合、停止するのはwhileループのみです。

具体的なイメージを掴むために、以下の例を見てみましょう。

for (int; expression; updateCounter) {
	// 処理
	while (true) {
		// 処理
		if (condition_is_met) {
			break;
		}
	}
}

まずforループを開始し、その中でwhileループを開始します。break文が実行されると、whileループは停止します。しかし、外側のforループは引き続き実行されます。

ラベル付きbreak文

break文にラベルを付けることで、「ラベル付きbreak」を作成できます。通常のbreak文が最も内側のループしか抜けられないのに対し、ラベル付きbreakは指定したラベルの付いたステートメントを直接終了させることができます。ラベル付きbreakの構文は以下の通りです。

break label_name;

例えば、以下のようなネストされたループがあるとします。

for (int; expression; updateCounter) {
	// 処理
	for (int; expression; updateCounter) {
		// 処理
		while (true) {
			if (condition_is_met) {
				break;
			}
		}
	}
}

条件が満たされたときに、内側のループをすべて終了し、最初のforループの処理に戻りたいとします。つまり、内側のループをまとめて抜けて、外側のループは継続させたいわけです。

これは、ラベル付きbreak文を使えば実現できます。2つ目のforループとwhileループを抜け出すコードは以下のようになります。

for (int; expression; updateCounter) {
	// 処理
	top_break:
	for (int; expression; updateCounter) {
		// 処理
		while (true) {
			if (condition_is_met) {
				break top_break;
			}
		}
	}
}

break top_break文が実行されると、プログラムはtop_breakラベルが付けられた位置まで、すべてのループを一気に終了します。この例では、2つ目のforループとwhileループの両方が終了し、プログラムは外側のforループの処理を続行します。

まとめ

Javaのbreak文は、ループを終了させるための構文です。また、ラベル付きbreak文を使うことで、任意のループを終了させてラベルの位置へ処理をジャンプさせることもできます。

この記事では、break文およびラベル付きbreak文を使ってプログラムの流れを制御する方法を解説しました。

さらにJavaについて学びたい方は、学習ロードマップやおすすめの教材を活用しながら、実際にコードを書いて練習することをおすすめします。小さなプログラムを繰り返し作ることが、理解を深める一番の近道です。

  1. C#のwhileループでbreakステートメントを使う方法を解説

    C#におけるbreakステートメントは、ループを即座に終了させ、実行をループ直後の次のステートメントへ移すための制御構文です。ループ内でbreakステートメントが実行されると、その時点でループは強制的に中断され、プログラムの制御はループの後に続く処理へと移ります。条件に関係なく途中でループを抜けたい場合に非常に便利です。breakステートメントの基本的な使い方ここでは、whileループの中でbreakステートメントを使う具体的な例を見ていきましょう。以下のコードスニペットでは、特定の条件を満たしたときにbreakによってループを終了させています。if (a > 15) { bre

  2. Pythonのif文内でbreakステートメントは使える?使い方と注意点を解説

    PythonのbreakステートメントとはPythonのbreakキーワードは、ループの流れを制御するための重要なステートメントです。breakが実行されると、その時点で残りの反復処理(イテレーション)はすべて中断され、プログラムの制御はループの直後にある次の文へと移ります。実際のコードでは、breakはほぼ必ず条件分岐であるifブロックの中に記述されます。つまり、「ある条件を満たした場合にのみループを抜ける」という形で使われるのが一般的です。whileループ内でのbreakの基本構文while expr == True:    stmt1 &