【Java】レッスン2-03: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:クラス編
Javaのswitch文とは何か?基本構文と使い方をわかりやすく解説

Javaのプログラミングを始めたばかりの方にとって分岐処理はとても重要な概念です。
今回はJavaの分岐処理の一つである switch
文について詳しく説明します。
switch文の役割と基本的な使い方
switch
文はある変数の値に基づいて、複数の選択肢の中から処理を分岐させるために使われる構文です。
多くの条件を一度に扱う際、if
文よりもコードが読みやすく、かつ管理しやすくなります。
例えば曜日に応じて異なるメッセージを表示する場合などに、switch
文を使うと簡潔に処理できます。
Javaにおけるswitch構文の書き方とポイント
switch
文の基本的な構文は次の通りです。
switch (変数) { case 値1: // 値1のときに実行される処理 break; case 値2: // 値2のときに実行される処理 break; // 他にも必要なケースを追加できます default: // どのケースにも当てはまらないときの処理 break; }
switch
の後に括弧()
で条件に使いたい変数を指定します。case
は条件に一致した場合に実行する処理です。case 値:
という形で書き、:
の後に実行するコードを記述します。break
文は、それぞれのcase
に対応する処理が終わった後に、switch
文を抜けるために必要です。break
がないと、次のcase
の処理まで実行されてしまうので注意が必要です。default
は、どのcase
にも該当しない場合に実行される処理です。default
はなくても問題ありませんが、指定しておくことで不測の値に対応できます。
switch文を使った成績評価の実践コード
ここでは成績を点数に基づいて評価する例を紹介します。点数を 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; } } }
評価コードのしくみとswitch文の流れを解説
この例では得点を 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文の要点と今後の学習へのつなげ方
switch
文は条件によってプログラムの処理を分岐させるための便利な方法です。
特に複数の条件を一度に扱う場合に、コードを読みやすく、整理されたものにすることができます。
今回紹介した成績評価の例や単位変換の例を参考に、switch
文をぜひ使ってみてください!
練習問題|switch文で曜日を表示するJavaプログラムを作ろう

ユーザーが数字を入力すると、その数字に対応する曜日を表示するプログラムを作成しましょう。
このプログラムでは、ユーザーに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までの数字を入力してください。」というエラーメッセージを表示します。
まとめ
このプログラムはScanner
を使ったユーザー入力、switch
文による条件分岐などの基本的なJava文法を学ぶのに適した例です。
プログラムを通して数値に対応するメッセージの出力方法やエラーハンドリングについても学べます。
このコードを理解することで、Javaの基本的なプログラム構造が身につくでしょう。引き続き他の例を試しながら、さらにJavaの文法に慣れていってください。