1

この記事の目次



このページは「JAVAの分岐構文 switch-case」の演習問題です。「JAVAの分岐構文 switch-case」の基礎を学びたい方はこちらで参考してください。

1.  switchで何曜日か確認する


問題:キーボードから1から7までの数字を入力して、それに応じて、何曜日かコンソールに出力する

解答例
package helloworld;

import java.util.Scanner; //Scannerクラスのimport
 
public class HelloWorld {
     
    public static void main(String[] args) {
        int number; 
        Scanner scanner = new Scanner(System.in);
         
        System.out.print("1から7までの数字を入力する: ");
        number = scanner.nextInt();
         
        switch (number) {
            case 1:
                System.out.println(number + "は日曜日です");
                break;
            case 2:
                System.out.println(number + "は月曜日です");
                break;
            case 3:
                System.out.println(number + "は火曜日です");
                break;
            case 4:
                System.out.println(number + "は水曜日です");
                break;
            case 5:
                System.out.println(number + "は木曜日です");
                break;
            case 6:
                System.out.println(number + "は金曜日です");
                break;
            case 7:
                System.out.println(number + "は土曜日です");
                break;
            default:
                System.out.println("1から7までの数字を入力してくださいよ。");
        }
                
    }
  
}

実行結果:

2.  母音の確認するプログラム


問題:好きな文字を入力して、それは母音かを確認して、コンソールに出力する

ヒント : 日本語で母音はあ、い、う、え、おの文字です

解答例
package helloworld;

import java.util.Scanner; //Scannerクラスのimport
 
public class HelloWorld {
     
    public static void main(String[] args) {
        char ch;
        Scanner scanner = new Scanner(System.in);
         
        System.out.print("好きな文字を入力: ");
        ch = scanner.next().charAt(0);  
         
        switch (ch) {
            case 'あ':
            case 'い':
            case 'う':
            case 'え':
            case 'お':
                System.out.println(ch + " は母音です。");
                break;
            default:
                System.out.println(ch + " は母音ではありません。");
        }
                
    }
  
}

実行結果:

説明:

  • scanner.next().charAt(0)はスキャナーから文字を入力するのです。
  • 上のコードはbreak文を入れなかったcaseブロックがあります。あ、い、う、え、おのcaseブロックはいずれも同じ処理するので、どの場合でも「お」caseブロックの処理に入るように、break文を入れませんでした。
  • 3.  二つの数字の演算


    問題:int型の数字を2つ入力して、「+ - * /」演算子の中から入力して、その演算子に応じて計算し、コンソールに出力する

    注意 : 割り算の場合、割られる数字は0になってはいけないので、演算子「/」の場合に if-else文を使いましょう

    解答例
    package helloworld;
    
    import java.util.Scanner; //Scannerクラスのimport
     
    public class HelloWorld {
         
        public static void main(String[] args) {
            int aNumber, bNumber;
            char kt;
            Scanner scanner = new Scanner(System.in);
         
            System.out.print("1つ目の数字を入力する: ");
            aNumber = scanner.nextInt();
            System.out.print("2つ目の数字を入力する: ");
            bNumber = scanner.nextInt();
            System.out.print("演算子(+, -, *, /)の中から選ぶ: ");
            kt = scanner.next().charAt(0);
             
            System.out.println("結果: ");
            switch (kt) {
            case '+':
                System.out.println(aNumber + " + " + bNumber + " = " + (aNumber + bNumber));
                break;
            case '-':
                System.out.println(aNumber + " - " + bNumber + " = " + (aNumber - bNumber));
                break;
            case '*':
                System.out.println(aNumber + " * " + bNumber + " = " + (aNumber * bNumber));
                break;
            case '/':
                if (bNumber == 0) {
                    System.out.println("二つ目の数字は0になってはいけません.");
                } else {
                    System.out.println(aNumber + " / " + bNumber + " = " + (float) aNumber / bNumber); // 割り算の結果をfloat型に変換する
                }
                break;
            default:
                System.out.println("演算子不正!");
            }
                    
        }
      
    }
    

    実行結果:

    説明:

  • 整数で整数を割ると結果は整数になるので、計算精度を上げるため、計算結果を少数float型に変換する必要がある。基本構文:(float) (整数/整数)、もっと知りたい方は「JAVAのデータ型、使い方」の記事を見てください。
  • 演算子「/」を入力した場合のcaseブロックにif-elseを入れました。つまり、必要な時にswitch文のcaseブロックにif-else文、またはwhile文、for文を入れることができます。
  • 4.  正しい選択肢を選ぶゲーム


    問題:問題に応じて、選択肢ア、イ、ウ、エ選択肢の中から選び、正しければ、「正解」を、間違えたら「不正解」をコンソールに出力する

    注意 : 「不正解」の回答は3つあります、つまり、処理が同じcaseブロックは3つあるため、break文を略してみましょう。

    解答例
    package helloworld;
    
    import java.util.Scanner; //Scannerクラスのimport
     
    public class HelloWorld {
         
        public static void main(String[] args) {
            char result;
            Scanner scanner = new Scanner(System.in);
             
            System.out.println("「正しい boolean型の宣言し方は」:下の4つの選択肢から選びなさい");
            // 「\"」は「"」にコンソールの出力します
            System.out.println("ア. boolean bool3 = \"1\";");
            System.out.println("イ. boolean bool2 = \"true\";"); 
            System.out.println("ウ. boolean bool1 = true;");
            System.out.println("エ. boolean bool4 = 1;");
             
            System.out.print("あなたの回答: ");
            result = scanner.next().charAt(0);
            switch (result) {
                case 'ア':
                case 'イ':
                case 'エ':
                    System.out.println("不正解!");
                    break;
                case 'ウ':
                    System.out.println("正解!");
                    break;
                default:
                    System.out.println("以上の選択肢だけ選んでください");
                }
                    
        }
      
    }

    実行結果:

    説明:

  • ア、イ、エの場合のcaseブロック内にいずれも処理は「不正解」を出力するだけのため、break文を略したことで、プログラムが短くなれます。
  • 上のプログラムで、「ア」を入力した場合に、「ア」caseブロック内の処理行いますが(このプログラムの場合に処理が何も書かれてない)、break文が無いため、そのまま、「イ」caseブロック内の処理にすすんでしまい、同じく「エ」caseブロック内の処理までに行って処理してbreak文で終了します。つまり、「ア、イ、エ」のどの場合でも「エ」caseブロック内の処理を行いますので、以上の結果になったわけです。
  • 5.  まとめ


    以上の演習課題から、switch-case分岐命令の使い方は応用までわかりましたでしょうか!。

    switch-case文にifse-elseを挟むことができたり、caseブロック内にbreak文を略しても大丈夫だったりすることがわかりましたね。switch-caseが使える場合はif-else文にも適用でしますが、ぜひswitch-case文を上手く使用してください。

    広告