手を動かして学ぶ Java入門 (break文)
環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の break文について学びます。
10分くらいで、さくっと終わる記事をめざしています。
シリーズ一覧
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)
続きは近日公開予定!
はじめに
この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/11/18 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)
実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。
詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。
前回のおさらい
前回の記事 では while文について学びました。
while文とは、処理を繰り返し実行するための制御文です。
- 条件 A を満たしている間は B を処理し続ける
というコードですね。
基本の形は次のようになります。
while (条件式) {
ループ文
}
今回は while文を制御するための break文について学びます。
break文とは
break文とは、while文を終わらせるために使う「文」です。
while文を「終わらせる」と表現する代わりに、while文を「抜ける」とも表現しますね。
通常、while文は、
while (条件式) {
ループ文
}
上記の条件式を 満たしている 間はループ文を実行し続けます。
しかし、break文を使えば、上記の条件式に関係なく、ループ文の好きな場所 で while文を終わらせることができます。
例えば、
- ループ文の処理中に問題が発生したので即座にループを抜けたい
なんてときに使えますね。
break文は、
break;
と書きます。
「文」なので、末尾にセミコロン (;) が必要です。
一般的には、次のように if文とともに使うことが多いでしょう。
while (条件式1) {
... 処理A ...
if (条件式2) {
break;
}
... 処理B ...
}
フローチャート図にすると次のようになります。
(フローチャートとは、処理の流れを図にしたものです)
それでは、プログラムで実際の動きを確認してみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。
while文の条件式は固定値の true となっており、常に条件式が満たされています。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
a = 1
a = 2
a = 3
break!
while文終了
と表示されたら成功です。
【補足】
繰り返し制御文には、while文の他にも
- for文
- 拡張for文 (for-eachループ文)
があります。
もちろん、for文や 拡張for文でも break文は使えます。
コードの解説
int a = 1;
while (true) {
System.out.println("a = " + a);
if (a > 2) {
System.out.println("break!");
break;
}
a = a + 1;
}
System.out.println("while文終了");
それでは、先ほどのコードを少しずつ見ていきましょう。
まずは、変数 a を 1 で初期化します。
int a = 1;
次は while文です。
while (true) {
...
}
while文の条件式は固定値の true となっており、常に条件式が満たされています。
このままでは無限ループとなってしまいますね … でも大丈夫です。
if文の a > 2 の条件を 満たせば、break文が実行されて while文が終わります。
while (true) {
...
if (a > 2) {
...
break;
^^^^^^ <---- ★大事なポイント!
}
...
}
もし if文の a > 2 の条件を 満たさなければ、次の処理にすすみます。
while (true) {
...
if (a > 2) {
...
break;
}
a = a + 1;
^^^^^^^^^^ <--- この部分!
}
変数 a は、最初 1 だったので、
a = 1 + 1
となり、変数 a に 2 が代入されます。
これでループ文の処理はすべて終わりです。
そのため、ループ文の先頭から処理を実行していきます。
先ほどとは違って変数 a は 2 になっています。
while (true) {
System.out.println("a = " + a);
^^^^^^^^^^ <--- "a = 2" と表示
...
}
ただし、if文の a > 2 の条件はまだ 満たしていません。
すると、a = a + 1 が実行されて、変数 a は 3 になります。
さて、またループ文の先頭から処理を実行していきます。
今度は変数 a は 3 になっています。
ついに、if文の a > 2 は条件を 満たしました。
そのため、if文 の { ... } の部分が実行されます。
while (true) {
...
if (a > 2) {
^^^^^ <--- 条件を満たす!
System.out.println(break!);
break;
}
...
}
System.out.println("while文終了");
println メソッドで "break!" と表示してから、break文で while文を抜けます。
最後に println メソッドで "while文終了" と表示して、プログラムは終わります。
多重ループの break文
while文の中に、さらに while文があることを 多重ループ といいます。
while (...) { // 外側の while文
...
while (...) { // 内側の while文
...
}
}
さて、「内側の while文」の中で break すると、繰り返し制御はどうなるのでしょうか?
「外側の while文」の外にまで、いっきに抜けるのでしょうか?
while (...) {
...
while (...) {
if (...) {
break; // ★ここ!
}
...
}
}
答えは「内側の while文からだけ抜ける」です。
外側の while文からは抜けません。
それでは、プログラムで実際の動きを確認してみましょう。
結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
a = 2
a = 4
a = 6
と表示されたら成功です。
【補足】
a % 2 == 0
この式は、変数 a が 偶数かどうか を判定する条件式です。
「数値と演算」の記事で解説しましたが、% 記号は、割り算の「余り」を計算します。
数値を 2 で割って余りが 0 であれば偶数、余りが 1 であれば奇数と判定できます。
1 % 2 == 1
2 % 2 == 0
3 % 2 == 1
4 % 2 == 0
:
:
という感じですね。
応用問題
【問題】
プログラムを実行すると、
x = 1 : y = 2
x = 3 : y = 4
x = 5 : y = 16
と「出力」へ表示されるようにしてください。
プログラム中で書き換えてよいのは1か所です。
変数 y の代入文の ### の部分です。
y = ###;
^^^ <--- ★この部分
例えば y = y + 1; のような感じで、書き換えてみてください。
それでは、下のプログラムの # の箇所を書き換えて「実行(Ctrl-Enter)」してみましょう。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
無事に、
x = 1 : y = 2
x = 3 : y = 4
x = 5 : y = 16
と出力されましたでしょうか?
もし解けなかった場合は、下記の回答例をご参照ください。
回答例
【コード】
public class Main {
public static void main(String[] args) {
int x = 1;
int y = 2;
while (x < 6) {
System.out.println("x = " + x + " : y = " + y);
if (y > 10) {
break;
}
x = y + 1;
y = y * y;
}
}
}
【出力】
x = 1 : y = 2
x = 3 : y = 4
x = 5 : y = 16
まとめ
break文とは、繰り返し制御文 (while文や for文など) を終わらせるために使う「文」です。
一般的には、次のように if文とともに使うことが多いでしょう。
while (条件式1) {
...
if (条件式2) {
break;
}
...
}
break文を使えば、ループ文の好きな場所で while文を終わらせることができます。
例えば、
- ループ文の処理中に問題が発生したので即座にループを抜けたい
なんてときに使えます。
有効に活用してしていきたいですね。
次回は「手を動かして学ぶ Java入門 (continue文)」になります。
関連記事
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)