
Java入門|switch文でのbreak文の使い方
breakの位置で、switch文の流れが変わる。使い方がわかると、分岐処理をすっきり整理できる。
これまで、break文はループを途中で終わらせるための文として見てきました。
ただ、break文は繰り返し処理だけで使うものではありません。Javaでは、switch文の中でもbreak文がとても重要な役割を持っています。
switch文は、値に応じて処理を分けたいときに使う構文です。けれども、caseごとに書かれた処理は、break文がないと次のcaseへそのまま流れていくことがあります。つまり、switch文ではbreak文をどこに置くかによって、処理のまとまり方が変わるのです。
この性質を理解すると、「このcaseとこのcaseは同じ処理にしたい」「ここで処理を区切りたい」といった設計ができるようになります。反対に、break文の位置をよく見ないまま書くと、意図しないcaseまで処理が進んでしまうこともあります。
ここでは、switch文の中でbreak文がどのように働くのか、なぜ必要なのか、どこに置くとどう変わるのかを、サンプルプログラムや表を使いながらやさしく整理していきます。
switch文の中のbreak文とは何か
switch文の中で使うbreak文は、これまで学んできたbreak文と同じものです。
役割は、その場でswitch文の処理を終えて、外へ抜けることです。
基本のイメージは次のようになります。
switch(式){
case 値1:
処理;
break;
case 値2:
処理;
break;
default:
処理;
break;
}この形では、あるcaseの処理が実行されたあと、break文によってswitch文の外へ抜けます。
そのため、通常は1つのまとまりだけが実行されることになります。
break文がないとどうなるのか
switch文では、break文がない場合、処理がそこで止まらず、次のcaseへそのまま進むことがあります。
これを最初に押さえておくことがとても大事です。
たとえば、次のようなイメージです。
switch(値){
case 1:
処理A;
case 2:
処理B;
break;
}もし値が1なら、処理Aだけで終わるのではなく、そのまま処理Bまで進みます。
つまり、case 1 に break がないため、case 2 の処理も続けて実行されるわけです。
この性質は一見ややこしく感じますが、うまく使うと「複数のcaseで同じ処理をまとめる」ことができます。
switch文でbreak文が必要な理由
switch文の中でbreak文がよく使われるのは、caseごとの処理をきちんと区切るためです。
break文ありの場合
- 該当するcaseの処理を実行する
- break文でswitch文を抜ける
- 次のcaseには進まない
break文なしの場合
- 該当するcaseの処理を実行する
- 次のcaseの処理にも進むことがある
- 意図しない動きになることがある
この違いを表にすると、次のようになります。
| 状態 | 処理の流れ |
|---|---|
| break文がある | そのcaseの処理で止まる |
| break文がない | 次のcaseへ続いて進むことがある |
Sample10.java でswitch文のbreak文を見てみよう
では、switch文の中でbreak文を使うサンプルを見ていきましょう。
ファイル名:Sample10.java
import java.io.*;
class Sample10
{
public static void main(String[] args) throws IOException
{
System.out.println("メニュー番号を入力してください。(1~5)");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int menu = Integer.parseInt(str);
switch(menu){
case 1:
case 2:
System.out.println("飲み物メニューを表示します。");
break;
case 3:
case 4:
System.out.println("食べ物メニューを表示します。");
break;
case 5:
System.out.println("本日のおすすめを表示します。");
break;
default:
System.out.println("1~5の番号を入力してください。");
break;
}
}
}実行結果の例
1を入力した場合
メニュー番号を入力してください。(1~5)
1
飲み物メニューを表示します。2を入力した場合
メニュー番号を入力してください。(1~5)
2
飲み物メニューを表示します。3を入力した場合
メニュー番号を入力してください。(1~5)
3
食べ物メニューを表示します。5を入力した場合
メニュー番号を入力してください。(1~5)
5
本日のおすすめを表示します。このプログラムのポイント
このプログラムでは、入力された番号によって表示する内容を切り替えています。
ここで注目したいのは、case 1 と case 2 の間にbreak文がないこと、そして case 3 と case 4 の間にもbreak文がないことです。
そのため、
- 1 または 2 のときは同じ処理
- 3 または 4 のときは同じ処理
になるようにまとめられています。
対応表
| 入力値 | 実行される処理 |
|---|---|
| 1 | 飲み物メニューを表示 |
| 2 | 飲み物メニューを表示 |
| 3 | 食べ物メニューを表示 |
| 4 | 食べ物メニューを表示 |
| 5 | 本日のおすすめを表示 |
| それ以外 | 入力エラーの案内 |
このように、break文の位置を工夫すると、複数のcaseを1つの処理にまとめられます。
caseをまとめる書き方
switch文では、同じ処理をさせたいcaseを連続して並べることがあります。
case 1:
case 2:
System.out.println("飲み物メニューを表示します。");
break;この書き方では、
- 1に一致した場合も
- 2に一致した場合も
同じ表示文が実行されます。
これは、case 1 のあとにbreak文がないため、case 2 の位置まで処理が流れていくからです。
ただし、最終的には case 2 のところにある処理を実行し、そのあと break でswitch文を抜けます。
break文の位置が大事な理由
switch文では、どこにbreak文を書くかで処理のまとまりが変わります。
ここはとても大切です。
たとえば、次のような書き方をするとどうなるかを考えてみましょう。
case 1:
System.out.println("飲み物メニューを表示します。");
break;
case 2:
System.out.println("飲み物メニューを表示します。");
break;この形でも正しく動きますが、同じ内容を2回書いているので少し冗長です。
一方で、今回のように
case 1:
case 2:
System.out.println("飲み物メニューを表示します。");
break;と書けば、同じ処理をすっきりまとめられます。
break文の位置を間違えるとどうなるか
break文の位置を意識しないと、意図しないcaseまで処理が流れてしまうことがあります。
たとえば、次のようなコードです。
switch(menu){
case 1:
System.out.println("飲み物メニューを表示します。");
case 2:
System.out.println("食べ物メニューを表示します。");
break;
}この場合、menu が 1 のときは、飲み物メニューだけでなく、続けて食べ物メニューの処理まで実行されます。
つまり、case 1 に break がないため、case 2 まで進んでしまうのです。
動きの整理
| 入力値 | 実行される処理 |
|---|---|
| 1 | 飲み物メニュー → 食べ物メニュー |
| 2 | 食べ物メニュー |
これは意図的に使うこともありますが、初心者のうちは「breakを書き忘れたミス」として起こりやすいので気をつけたいところです。

この図では、switch文の中でのbreak文の役割を表現しています。
特に注目してほしい点は、次の2つです。
| 注目点 | 意味 |
|---|---|
| breakがある | そのcaseの処理で区切られる |
| breakがない | 次のcaseへ処理が続くことがある |
switch文は見た目が整っているぶん、break文の有無を見落としやすいです。
図で流れを確認すると、どこで止まるのかがかなりはっきりします。
default にもbreak文を書くのか
default は switch文の最後に置かれることが多いので、理屈だけでいえば最後の break はなくても動く場合があります。
ただ、学習の段階では書いておくほうが読みやすく、各caseの形もそろいます。
たとえば今回のように、
default:
System.out.println("1~5の番号を入力してください。");
break;と書いておくと、各まとまりが同じ形になるので見通しがよくなります。
switch文でのbreak文とループでのbreak文の違い
break文は同じ命令ですが、使われる場所によって「何から抜けるのか」が変わります。
| 使う場所 | break文で抜ける対象 |
|---|---|
| for文・while文 | そのループ |
| switch文 | そのswitch文 |
つまり、switch文の中のbreak文は、ループを終わらせるためではなく、switch文の分岐処理を終えるために使われています。
この違いを押さえておくと混乱しにくくなります。
switch文でbreak文を使うときのコツ
switch文を書くときは、次の点を意識するとわかりやすくなります。
| コツ | 内容 |
|---|---|
| caseごとに区切りたいならbreakを書く | 不要な流れ込みを防げる |
| 同じ処理をまとめたいcaseには途中でbreakを書かない | 重複を減らせる |
| breakの位置を目で確認する | 意図した分岐になっているか見直しやすい |
| defaultも含めて形をそろえる | コードが読みやすくなる |
特に「このcaseは単独で終わるのか、それとも次とまとめるのか」を意識すると、break文の役割がはっきり見えてきます。
switch文でのbreak文を学ぶ意味
switch文の中のbreak文を理解すると、分岐処理をより正確に書けるようになります。
ただcaseを並べるだけでなく、
- ここで処理を区切る
- このcaseと次のcaseは同じ処理にする
- ここからは別のまとまりにする
といった設計ができるようになるからです。
今回の内容では、switch文の中でのbreak文は
- switch文から抜けるために使う
- breakがあると、そのcaseの処理で止まる
- breakがないと、次のcaseへ流れることがある
- breakの位置によって複数caseを同じ処理にまとめられる
という点が大切でした。
この使い方が身につくと、switch文を使ったメニュー処理や評価判定なども、ずっと読みやすく整理して書けるようになります。
