break文とは
break文は反復処理を行う際に利用でき、break文に到達すると反復処理(以下ループ)はそこで終了します。
(switch文でも利用可能です)
breakの利用
breakはその場所に到達した時点でループは強制終了されます。以下のような文法はコンパイルエラーとなります。
1 2 3 4 |
for(int i = 0; i < 10; i++){ break; System.out.println("表示"); } |
System.out.println(“表示”);
^
エラー1個
breakで強制的にループが終了する為、表示処理まで到達できないことが原因で、コンパイルエラーが起こります。
breakと表示処理の行を入れ替えるとコンパイルエラーは起こりませんが、一回表示処理を行った後ループ終了となる為、反復処理の意味が無くなってしまいます。
breakは通常、条件分岐と組み合わせて利用し、「条件に合致した場合にループを終了する」という流れをつくります。
break文 サンプルプログラム
以下のプログラムを「Number19.java」という名前でworkフォルダ内に保存します。
保存が完了したら、コマンドプロンプトを起動し、コンパイルおよび実行を行ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Number19{ public static void main(String[] args){ int count = 1; //無限ループをbreakで終了させる while(true){ //countをインクリメントしながら表示 System.out.println(count++); //countが10になったら終了 if(count == 10) break; } } } |
実行例
c:\work>javac Number19.java
C:\work>java Number19
1
2
3
4
5
6
7
8
9
※実行例はコンパイルから実行までの例を表示しています。
文がネストされている時のbreak
複数のループ処理がネストされている場合にbreakを記述すると、breakを記述した場所によって、ループ処理を終了するかが異なります。
例えば、一番内側のループ内にbreakが記述されている場合は一番内側のループのみの終了となります。その外側のループは終了しません。
2重ループの内側にbreakがある場合
2重ループの外側にbreakがある場合
また、breakはifなどの条件分岐を終了させる文ではないので、ifが何重になっていても、breakが記述されている直近のループを終了させることになります。
複数のifに囲まれているbreakがあった場合
1 2 3 4 5 6 7 8 9 10 11 12 |
count = 1; //無限ループをbreakで終了させる while(true){ //countをインクリメントしながら表示 System.out.println(count++); if(count >= 3){ if(count <= 7){ //複数のifで囲まれていてもwhileループが終了する break; } } } |
break文 復習問題
- breakは○処理を終了させることができる構文である。○に入る語句を選んでください。
- breakは反復処理の他に○文を終了させることができる構文である。○に入る語句を選んでください。
- 数字を1から10まで表示したい。次のプログラムの□に入る記述を選んでください。
1234567int i = 0;while(true){System.out.println(++i);if(□){break;}} - 以下のプログラムはどのような結果になるか選んで下さい。
1234while(true){break;System.out.println("表示");} - お疲れ様でした。
-
- 分岐
- 順次
- 逐次
- 反復
-
- if
- 順次
- 分岐
- switch
-
- i > 10
- i >= 10
- i == 10
- i = 10
-
- コンパイルエラー
- 実行時エラー
- 「表示」という文字が無限に表示される
- 「表示」という文字が1度だけ表示される
まとめ
- breakはループ処理やswitchを終了させることができる
- 基本的にはifと組み合わせて利用される
- ループがネストされている場合は直近のループのみが終了される