switch文 例題

電気の基本料金算出

電気の基本料金は契約アンペア数によって次の表のように決まっています。契約アンペア数を入力すると基本料金を表示するプログラムはswitch文で実現できます。この表にないアンペア数を入力したときは入力が誤っていると表示するようにします。

契約A数 基本料金(円)
10 260.00
15 390.00
20 520.00
30 780.00
40 1040.00
50 1300.00
60 1560.00
import java.io.*;
import java.text.*;

class DenkiRyokin {
  public static void main(String args[]){
    int KeiyakuA, KihonRyokin;
    
    BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
    DecimalFormat DF = new DecimalFormat();

// 契約アンペア数の入力
    System.out.print("契約アンペア数を入力してください : ");
    try {
      String s = BR.readLine();
      Number Num = DF.parse(s);
      KeiyakuA = Num.intValue();
    }
    catch (IOException e) { KeiyakuA = -1; }
    catch (ParseException e) { KeiyakuA = -2; }
    
// 契約アンペア数による基本料金の算出
    switch (KeiyakuA) {
      case -1 : System.out.println("I/Oの例外が発生しました。");
                System.out.println("基本料金は計算できません。。");
                break;
      case -2 : System.out.println("パース時の例外が発生しました。");
                System.out.println("基本料金は計算できません。。");
                break;
      case 10 : System.out.println("基本料金は260円です"); break;
      case 15 : System.out.println("基本料金は390円です"); break;
      case 20 : System.out.println("基本料金は520円です"); break;
      case 30 : System.out.println("基本料金は780円です"); break;
      case 40 : System.out.println("基本料金は1040円です"); break;
      case 50 : System.out.println("基本料金は1300円です"); break;
      case 60 : System.out.println("基本料金は1560円です"); break;
      default : System.out.println("入力された契約アンペア数は無効です。");
    }
  }
}
アプレット化されたプログラムの実行

メニューを作る

switch文を使うと簡単なメニューを作れます。ここでは次の三つのメニュー項目を用意します。これらの項目は入力された整数に対する処理になります。

  1. 平方根の計算
  2. 二乗の計算
  3. 逆数の計算
import java.io.*;
import java.text.*;

class Menu {
  public static void main(String args[]){
    int Mno, I;
    double Kekka;
    String s;
    Number Num;
    
    BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
    DecimalFormat DF = new DecimalFormat();
    
// メニューの表示
    System.out.println("次のメニューから番号を選択してください");
    System.out.println("--------------------------------------");
    System.out.println(" 1 : 平方根の計算");
    System.out.println(" 2 : 二乗の計算");
    System.out.println(" 3 : 逆数の計算");
    System.out.println("--------------------------------------");
    System.out.println();
    System.out.print("メニュー番号を入力 : ");

// メニュー項目番号の入力
    try {
      s = BR.readLine();
      Num = DF.parse(s);
      Mno = Num.intValue();
    }
    catch (IOException e) { Mno = 0; }
    catch (ParseException e) { Mno = 0; }

// 計算対象の数値を入力
    System.out.print("計算する数値を入力してください。");
    try {
      s = BR.readLine();
      Num = DF.parse(s);
      I = Num.intValue();
    }
    catch (IOException e) { I = 0; }
    catch (ParseException e) { I = 0; }

// メニュー番号による処理の分岐
    switch (Mno) {
      case 1 : Kekka = Math.sqrt(I);
               System.out.println(I + "の平方根は" + Kekka + "です");
               break;
      case 2 : Kekka = Math.pow(I,2);
               System.out.println(I + "の二乗は" + Kekka + "です");
               break;
      case 3 : Kekka = 1 / (double)I;
               System.out.println(I + "の逆数は" + Kekka + "です");
               break;
      default : System.out.println("選択したメニュー番号は無効です");
    }
  }
}