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

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:分岐処理(if文)

この記事の練習問題で使用する知識:
基礎構文(レッスン1)、比較演算子と論理演算子分岐処理(if文)分岐処理(switch文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御配列エラーメッセージ例外処理の基礎

<<前の問題 問題集Top 次の問題>>

JAVAの文法「分岐処理(swich文)」とは

ここでは分岐処理(swich文)の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。



Javaのプログラミングを始めたばかりの方にとって分岐処理はとても重要な概念です。

今回はJavaの分岐処理の一つである switch 文について詳しく説明します。

switch文とは?

switch文はある変数の値に基づいて、複数の選択肢の中から処理を分岐させるために使われる構文です。

多くの条件を一度に扱う際、if文よりもコードが読みやすく、かつ管理しやすくなります。

例えば曜日に応じて異なるメッセージを表示する場合などに、switch文を使うと簡潔に処理できます。

基本的な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 文で評価し、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 10case 9: 100点も90点以上も同じA評価にしたいため、case 10case 9を続けて書いています。switch文では、複数のcaseを同じ処理に結びつけることができます。
  • default: 点数が60点未満の場合、どのcaseにも当てはまらないため、defaultで「評価はFです。」と表示されます。

まとめ

switch文は条件によってプログラムの処理を分岐させるための便利な方法です。

特に複数の条件を一度に扱う場合に、コードを読みやすく、整理されたものにすることができます。

今回紹介した成績評価の例や単位変換の例を参考に、switch文をぜひ使ってみてください!

JAVA練習問題2-3_スイッチ文の使用

ユーザーが数字を入力すると、その数字に対応する曜日を表示するプログラムを作成しましょう。

このプログラムでは、ユーザーに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ブロックを終了
        }
    }
}

********************

コードの解説

このコードはユーザーが入力した数字に基づいて対応する曜日を表示するJavaプログラムです。

以下に各ブロックの構成と使用されている文法の解説を行います。

必要なクラスのインポート

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の文法に慣れていってください。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る