KENスクールブログ | パソコン教室・パソコン講座なら個別指導のKENスクール

BLOGKENスクールブログ

  1. KENスクール TOP >
  2. KENスクールブログ > プログラム > ラベル付きbreak文(Java)

プログラム

ラベル付きbreak文(Java)

未経験から就転職を目指すJavaプログラミング特集

多重ループの実行中に外側のfor文を一気に抜け出す方法として、ラベル付きbreak文が便利です。
ではさっそく使用例を見ていきましょう。

このプログラムは、5個の整数を1グループとして、全10グループの合計を求めます。
その都度入力をして、小計を求めていくことができますが、次のようなコマンドを入力すると、途中で中断できるようになっています。

9999を入力⇒全体の入力を終了
8888を入力⇒小計の入力を中断し、次のグループへ

プログラムの注目すべき点は、11行目のOuter、15行目のInnerがそれぞれのfor文に付いている点です。
これらのことを『ラベル付き文』といいます。

『定義 ラベル付き文  
    識別子 : 文 』

プログラムの流れがラベル付きbreak文に差し掛かると、そのラベルを持つ繰り返し文のブロックを抜けます。

そのため、今回のプログラムを解説すると、
6行目ではScannerクラスのインスタンス化を行い、コンストラクタの引数でSystem.inを設定してます。
System.inはキーボードと結びついた標準入力ストリームで、簡単に説明すると、キーボードから入力された値を使うための準備をしています。
8行目でユーザーに対して、「整数を加算します。」と出力をし、今から行うことが分かるように表示しています。
そして、9行目では、全グループの合計を求める用のint型の変数totalを宣言しています。
11行目ではOuterというラベル付き文の宣言をしています。そのため、12行目から始まるfor文にOuterというラベルを付けたことになります。
このfor文は、iが1からスタートし、10回繰り返す繰り返し文です。
13行目で「第〇グループ」と何回目の繰り返しか分かるように出力をしています。
そして、14行目では、このグループの小計を求める用のint型の変数sumを宣言しています。
15行目では、Innerというラベル付き文の宣言をしています。これは、16行目から始まるfor文にInnerというラベルを付けたことになります。
このfor文は、jが0からスタートし、5回繰り返す繰り返し文です。
18行目ではScannerクラスのnextInt()メソッドを使用し、キーボードからの入力を受け付けます。
19行目からの条件分岐のif文で、入力された数値が『9999』か『8888』かをチェックしています。
もし、『9999』が入力されたならば、20行目に処理が行きます。
そして、ラベル付きbreak文である、「break Outer」の処理を実行することになるため、処理はOuterラベルの付いたfor文のブロックを突き抜けます。
そのため、29行目の処理に飛び、合計の出力をして処理が終わります。
もし、『8888』が入力されたのであれば、22行目に処理が行きます。
そして、「break Inner」を実行することになるため、処理はInnerラベルの付いたfor文のブロックを突き抜けます。
そのため、26行目の処理に飛び、小計を出力後、外側のfor文の繰り返し処理を実行していくことになります。
解説は以上です。

ラベル付きbreak文無くとも条件分岐等で抜けることはできなくはないですが、処理が嵩張るため、非常に見ずらくなります。
知らなかったという方は、是非ご参考にしてください。

※補足・・・ラベル付きcontinueも同様に使用できます。

この記事に関連する講座

一日も早くエンジニアとして活躍したい方からキャリアチェンジまで!

詳しくはこちら