【Java】レッスン2-3:switch文による分岐処理を理解しよう

一つ前のページでは if文による分岐処理 について学習しました。
今回は switch文による分岐処理 について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう
・Lesson2-3:switch文による分岐処理を理解しよう ◁今回はココ
・Lesson2-4:for文による繰り返し処理を理解しよう
・Lesson2-5:while文による繰り返し処理を理解しよう
・Lesson2-6:繰り返しを制御しよう
・Lesson2-7:配列を理解しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理を理解しよう
・確認問題2-☆1:ハイアンドロー ゲームを作ろう
・確認問題2-☆2:数字当てゲームを作ろう
・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス編
switch文とは何か?役割・基本構文・使い方をわかりやすく解説
複数の条件に応じて処理を切り替える場合、Javaではswitch文を使うことで、コードをスッキリと整理できます。
caseやdefaultを使えば、値ごとに異なる処理を簡潔に書き分けることが可能です。
if文でも同様の分岐はできますが、switch文にはより見やすく、管理しやすいというメリットがあります。
本記事では、switch文の基本構文からcase・defaultの使い方、さらにif文との違いまでを初心者向けにわかりやすく解説します。
最後まで読むことで、条件分岐をより効率的に書けるようになり、プログラムの可読性も向上します。それでは、一緒にswitch文の使い方を学んでいきましょう。

switch文の役割と基本構文・使い方
switch文 はある変数の値に基づいて、複数の選択肢の中から処理を分岐させるために使われる構文です。
多くの条件を一度に扱う際、if文よりもコードが読みやすく、かつ管理しやすくなります。
switch文の基本的な構文は次の通りです。
switch (変数) {
case 値1:
// 値1のときに実行される処理
break;
case 値2:
// 値2のときに実行される処理
break;
// 他にも必要なケースを追加できます
default:
// どのケースにも当てはまらないときの処理
break;
}switchの後に括弧()で条件に使いたい変数を指定します。caseは条件に一致した場合に実行する処理です。case 値:という形で書き、:の後に実行するコードを記述します。break文は、それぞれのcaseに対応する処理が終わった後に、switch文を抜けるために必要です。breakがないと、次のcaseの処理まで実行されてしまうので注意が必要です。defaultは、どのcaseにも該当しない場合に実行される処理です。defaultはなくても問題ありませんが、指定しておくことで不測の値に対応できます。
コード例|switch文で成績に応じたメッセージを出力
swich文を活用したコードの例を見てみましょう。
以下のコードはテストの点数に基づいて成績を評価する例です。点数を switch 文で評価し、A~Fまでの評価を行います。
public class Main {
public static void main(String[] args) {
int score = 85; // 点数を代入(例: 85点)
switch (score / 10) { // 10の位で判定
case 10: // 100点の場合
case 9: // 90点以上の場合
System.out.println("評価はAです。");
break;
case 8: // 80点以上の場合
System.out.println("評価はBです。");
break;
case 7: // 70点以上の場合
System.out.println("評価はCです。");
break;
case 6: // 60点以上の場合
System.out.println("評価はDです。");
break;
default: // 60点未満の場合
System.out.println("評価はFです。");
break;
}
}
}この例では得点を score という変数に格納し、それを switch文を使って評価しています。
score / 10 とすることで、点数の10の位を使って評価を行っています。
switch (score / 10): 10の位で成績を分類するため、90点以上は9、80点以上は8というように評価が行われます。case 10とcase 9: 100点も90点以上も同じA評価にしたいため、case 10とcase 9を続けて書いています。switch文では、複数のcaseを同じ処理に結びつけることができます。default: 点数が60点未満の場合、どのcaseにも当てはまらないため、defaultで「評価はFです。」と表示されます。
まとめ|複数条件を整理して分岐するスキルを習得
今回の学習ではswitch文の役割と基本構文を理解し、caseやdefaultを使って複数の条件に応じた処理を分岐する方法を習得しました。
さらに、具体的なコード例を通して、switch文を使うと条件分岐が簡潔で見やすくなることも確認できました。
これらの知識を身につけたことで、複雑な条件を整理しながら、可読性の高いコードを書けるようになります。
学んだ内容を活かし、分岐処理のスキルをさらに磨いていきましょう。
練習問題|switch文で曜日を表示するコードを書こう

ユーザーが数字を入力すると、その数字に対応する曜日を表示するプログラムを作成しましょう。
このプログラムでは、ユーザーに1から7までの数字を入力してもらい、その数字に対応する曜日を出力します。
もし1から7以外の数字が入力された場合は、エラーメッセージを表示するようにしましょう。
この問題の要件
以下の要件に従ってコードを完成させてください。
- ユーザーに1から7までの数字を入力してもらいます。
- 入力された数字に対応する曜日を表示するswitch文を使用します。
- 1から7以外の数字が入力された場合は「無効な入力です。1から7までの数字を入力してください。」と表示します。
- 入力にはScannerクラスを使用します。
ただし、以下のような実行結果となること。
1から7までの数字を入力してください: 3 水曜日
1から7までの数字を入力してください: 9 無効な入力です。1から7までの数字を入力してください。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:Scannerクラスのインポート
2:クラスDayOfWeekの定義
□ mainメソッドの定義
□ □ Scannerオブジェクトscannerを作成し標準入力を読み取る
□ □ 「1から7までの数字を入力してください: 」と出力
□ □ scannerオブジェクトを使用して入力を整数型で読み取り、変数dayに代入
□ □ switch文によるdayの値に応じた分岐処理を開始
□ □ □ case 1:「月曜日」と出力
□ □ □ □ breakによるcase 1の終了
□ □ □ case 2:「火曜日」と出力
□ □ □ □ breakによるcase 2の終了
□ □ □ case 3:「水曜日」と出力
□ □ □ □ breakによるcase 3の終了
□ □ □ case 4:「木曜日」と出力
□ □ □ □ breakによるcase 4の終了
□ □ □ case 5:「金曜日」と出力
□ □ □ □ breakによるcase 5の終了
□ □ □ case 6:「土曜日」と出力
□ □ □ □ breakによるcase 6の終了
□ □ □ case 7:「日曜日」と出力
□ □ □ □ breakによるcase 7の終了
□ □ □ default:入力が範囲外の場合「無効な入力です。1から7までの数字を入力してください。」と出力
□ □ □ □ breakによるdefaultブロックの終了
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import java.util.Scanner; public class DayOfWeek { public static void main(String[] args) { // Scannerオブジェクトを作成し、標準入力を読み取る Scanner scanner = new Scanner(System.in); // ユーザーに1から7までの数字を入力してもらうように指示 System.out.print("1から7までの数字を入力してください: "); int day = scanner.nextInt(); // ユーザーの入力を整数として読み取る /* 【穴埋め問題3】 ここにswitch文を用いてdayの値に応じて曜日を出力するコードを書いてください。 1から7に対応する各曜日を出力し、範囲外の数値にはエラーメッセージを出力します。 */ } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
import java.util.Scanner; public class DayOfWeek { public static void main(String[] args) { // Scannerオブジェクトを作成し、標準入力を読み取る Scanner scanner = new Scanner(System.in); // ユーザーに1から7までの数字を入力してもらうように指示 System.out.print("1から7までの数字を入力してください: "); int day = scanner.nextInt(); // ユーザーの入力を整数として読み取る // 入力された数字に対応する曜日を出力するためのswitch文 switch (day) { case 1: System.out.println("月曜日"); break; // caseブロックを終了 case 2: System.out.println("火曜日"); break; // caseブロックを終了 case 3: System.out.println("水曜日"); break; // caseブロックを終了 case 4: System.out.println("木曜日"); break; // caseブロックを終了 case 5: System.out.println("金曜日"); break; // caseブロックを終了 case 6: System.out.println("土曜日"); break; // caseブロックを終了 case 7: System.out.println("日曜日"); break; // caseブロックを終了 default: // 入力が1から7の範囲外の場合の処理 System.out.println("無効な入力です。1から7までの数字を入力してください。"); break; // defaultブロックを終了 } } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
必要なクラスのインポート
import java.util.Scanner;
Scannerクラスは、ユーザーからの入力を受け取るために必要なクラスです。import文でjava.utilパッケージから読み込むことで、プログラム内でScannerを使えるようにしています。クラスとメインメソッドの定義
public class DayOfWeek { public static void main(String[] args) {ここでは
publicというアクセス修飾子を用いて、DayOfWeekクラスとmainメソッドを定義しています。mainメソッドはJavaプログラムのエントリーポイントで、プログラムが実行されるときに最初に呼び出されます。Scannerオブジェクトの作成
Scanner scanner = new Scanner(System.in);
ここで
Scannerオブジェクトscannerを作成しています。ユーザーへの入力の指示と入力の取得
System.out.print("1から7までの数字を入力してください: "); int day = scanner.nextInt();System.out.printはコンソールにメッセージを表示するための命令で、ここでは「1から7までの数字を入力してください」と表示しています。次に
scanner.nextInt()を使って、ユーザーが入力した整数をdayという変数に格納しています。switch文による条件分岐
switch (day) { case 1: System.out.println("月曜日"); break; case 2: System.out.println("火曜日"); break; case 3: System.out.println("水曜日"); break; case 4: System.out.println("木曜日"); break; case 5: System.out.println("金曜日"); break; case 6: System.out.println("土曜日"); break; case 7: System.out.println("日曜日"); break; default: System.out.println("無効な入力です。1から7までの数字を入力してください。"); break; }この部分は
switch文を使った条件分岐です。switch文はdayの値に応じて異なる処理を実行します。case 1:からcase 7:では、それぞれ1から7の値に対応する曜日をSystem.out.printlnで表示しています。break;は各ケースの処理が終わった後に次のケースに進まないようにする命令です。default:は上記のケースに当てはまらない場合(つまり1から7以外の値が入力された場合)に実行されます。この場合「無効な入力です。1から7までの数字を入力してください。」というエラーメッセージを表示します。


