JAVA練習問題1-4:スイッチ文の使用

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

JAVAの初心者向け問題1-4:スイッチ文の使用

この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型とプリミティブ型、四則演算と論理演算、入力と出力、配列、分岐処理(if、if~else、switch)、繰り返し処理(for、while、do~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文のポイント

  • breakの使い方: 各caseの処理が終わったらbreakswitch文から抜けます。breakを忘れると、次のcaseの処理も続けて実行されてしまうため注意が必要です。
  • default文の役割: どのcaseにも該当しない場合に実行される処理です。defaultがあることで、想定外の入力に対応できます。

他の応用例:数値の単位変換

もう一つの例として、数値の単位変換を考えてみましょう。ここでは、数値に基づいて単位を変更する簡単なプログラムを紹介します。

public class Main {
    public static void main(String[] args) {
        int option = 2;  // 1: キロメートル, 2: メートル, 3: センチメートル

        switch (option) {
            case 1:
                System.out.println("選択された単位はキロメートルです。");
                break;
            case 2:
                System.out.println("選択された単位はメートルです。");
                break;
            case 3:
                System.out.println("選択された単位はセンチメートルです。");
                break;
            default:
                System.out.println("無効な選択です。1から3までの値を入力してください。");
                break;
        }
    }
}

まとめ

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

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

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

JAVA練習問題1-4_スイッチ文の使用





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

このプログラムでは、ユーザーに1から7までの数字を入力してもらい、その数字に対応する曜日を出力します。

もし1から7以外の数字が入力された場合は、エラーメッセージを表示するようにしましょう。

この問題の要件

以下の要件に従ってプログラムを作成してください。

  • ユーザーに1から7までの数字を入力してもらいます。
  • 入力された数字に対応する曜日を表示するswitch文を使用します。
  • 1から7以外の数字が入力された場合は「無効な入力です。1から7までの数字を入力してください。」と表示します。
  • 入力にはScannerクラスを使用します。

ただし、以下のような実行結果となること。

----- ↓出力される結果の例↓ -----

1から7までの数字を入力してください: 3
水曜日
1から7までの数字を入力してください: 9
無効な入力です。1から7までの数字を入力してください。

----- ↑出力される結果の例↑ -----

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.import文
2.DayOfWeekクラスの定義
 2-1.mainメソッド
  2-1-1.Scannerオブジェクトの作成
  2-1-2.ユーザーに入力を促すメッセージを表示
  2-1-3.ユーザーからの入力を整数として読み取る
  2-1-4.switch文による分岐処理
   2-1-4-1.入力された数字が1の場合の処理(月曜日を表示)
   2-1-4-2.入力された数字が2の場合の処理(火曜日を表示)
   2-1-4-3.入力された数字が3の場合の処理(水曜日を表示)
   2-1-4-4.入力された数字が4の場合の処理(木曜日を表示)
   2-1-4-5.入力された数字が5の場合の処理(金曜日を表示)
   2-1-4-6.入力された数字が6の場合の処理(土曜日を表示)
   2-1-4-7.入力された数字が7の場合の処理(日曜日を表示)
   2-1-4-8.入力された数字が1から7の範囲外の場合の処理(エラーメッセージを表示)
  2-1-5.Scannerオブジェクトを閉じる

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class DayOfWeek {
    public static void main(String[] args) {
        // ***ここにScannerオブジェクトを作成し、標準入力を読み取るコードを書いてください***
        // ***ここにユーザーに1から7までの数字を入力してもらうためのメッセージを表示するコードを書いてください***
        // ***ここにユーザーの入力を整数として読み取るコードを書いてください***

        // 入力された数字に対応する曜日を出力するためのswitch文
        switch (day) { // ***ここにswitch文による分岐処理を書く***
            case 1:
                // ***ここに「月曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 2:
                // ***ここに「火曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 3:
                // ***ここに「水曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 4:
                // ***ここに「木曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 5:
                // ***ここに「金曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 6:
                // ***ここに「土曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            case 7:
                // ***ここに「日曜日」を出力するコードを書いてください***
                break; // caseブロックを終了
            default:
                // ***ここに「無効な入力です。1から7までの数字を入力してください。」と出力するコードを書いてください***
                break; // defaultブロックを終了
        }

        // ***ここにスキャナーを閉じてリソースを解放するコードを書いてください***
    }
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

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

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ブロックを終了
        }

        // スキャナーを閉じてリソースを解放
        scanner.close();
    }
}

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

コードの解説

このプログラムは、ユーザーに1から7までの数字を入力してもらい、その数字に応じた曜日を表示するものです。コードを段階ごとに分解して、初心者向けに解説します。

Scannerオブジェクトの作成

Scanner scanner = new Scanner(System.in);

この行では、Scannerクラスを使って、ユーザーからの入力を受け取るためのオブジェクトを作成しています。

System.inは標準入力(キーボード入力)を意味し、これを利用してユーザーからの入力を読み取ります。

ユーザーに入力を求める

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文は、複数の条件分岐を簡潔に書けるため便利です。

  • switch (day): 変数dayの値に基づいて処理を分岐します。
  • case 1: ~ case 7:: ユーザーが入力した数字が1から7の間なら、それぞれ対応する曜日を表示します。
  • default:: ユーザーが1から7以外の数字を入力した場合、エラーメッセージを表示します。

また、各ケースの処理が終わったらbreak文で処理を終了し、次のcaseに進まないようにしています。

リソースの解放

scanner.close();

プログラムの最後に、Scannerオブジェクトを閉じてリソースを解放します。これは、不要になったオブジェクトを適切に処理するための良い習慣です。

まとめ:switch文の重要性

このプログラムは、ユーザーが入力した数字に対応する曜日を表示するシンプルなものですが、switch文を使うことで複数の条件に対応する処理を効率的に行えます。

switch文は、分岐処理が複数ある場合にコードを簡潔にし、読みやすくするために非常に役立ちます。

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

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

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

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






    JAVA練習問題集へ戻る
    トップページへ戻る