演習 No.6 switch

switch文switch文例題を参照。

問題1. 電気料金計算

例題のプログラムを改造して一ヶ月の電気料金を計算できるようにする。プログラムの空欄を埋めなさい。

次の表が1kWh当たりの単価です。

1kWhあたりの電力料金(円) 単価
最初の120kWhまで 17.80
120kWhをこえ250kWhまで 23.85
250kWhをこえるもの 26.32

電気料金の計算式は次のとおりです。

電気料金=(基本料金+17.8×使用量1+23.85×使用量2+26.32×使用量3)×1.05

例えば、契約アンペア数が30A、一月の使用量が260kWhときは次のような式になります。

電気料金=(780+17.8×120+23.85×130+26.32×10)×1.05

処理の流れ

  1. 変数の初期化
  2. 契約アンペア数の入力
  3. 契約アンペア数によって基本料金の算出
  4. 使用電力量の入力
  5. 使用量による単価別の使用量の算出
  6. 電気料金の計算
import java.io.*;
import java.text.*;

class DenkiRyokin {
  public static void main(String args[]){

// 変数宣言
    int KeiyakuA, Shiyouryo, S1, S2, S3;
    int KihonRyokin, DenkiRyokin;

// 変数の初期化
    S1 = S2 = S3 = KihonRyokin = 0;

// 入力ストリーム、バッファの定義
    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 ((1)) {
      case -1 : System.out.println("I/Oの例外が発生しました。");
                System.out.println("基本料金は計算できません。。");
                break;
      case -2 : System.out.println("パース時の例外が発生しました。");
                System.out.println("基本料金は計算できません。。");
                break;
      case 10 : (2) = 260; break;
      case 15 : (2) = 390; break;
      case 20 : (2) = 520; break;
      case 30 : (2) = 780; break;
      case 40 : (2) = 1040; break;
      case 50 : (2) = 1300; break;
      case 60 : (2) = 1560; break;
      default : (2) = 0;
    }

// 使用電力量の入力
    System.out.print("一月の電力使用量を入力してください : ");
    try {
      String s = BR.readLine();
      Number Num = DF.parse(s);
      (3) = Num.intValue();
    }
    catch (IOException e) { Shiyouryo = 0; }
    catch (ParseException e) { Shiyouryo = 0; }

// 使用電力量による単価別の使用量の算出
// 基本料金が0でないときに料金を計算する
    if (KihonRyokin (4) 0) {

// 使用量120kWh以下の場合
      if(Shiyouryo <= 120) {
        S1 = (5);
        S2 = S3 = (6);
      }

// 120KWhより大きく、250kWh以下の場合
      if(Shiyouryo >120 (7) Shiyouryo <= 250) {
        S1 = (8);
        S2 = Shiyouryo - (9);
        S3 = (10);
      }

// 250kWhより大きい場合
      if(Shiyouryo > 250){
        S1 = (11);
        S2 = (12);
        S3 = Shiyouryo - (13);
      }

//電気料金の計算
      DenkiRyokin = ((14))(((15) + 17.8 * (16) + 23.85 * (17) + 26.32 * (18)) * 1.05);

      System.out.println("電気料金は" + (19) + "円です");
    } else {
      System.out.println("入力された契約アンペア数は無効です。");
    }
  }
}

問題2. 特急料金計算

距離により特急料金が次の表に示すような路線がある。この路線の利用距離による特急料金を求めるプログラムを作りなさい。

利用距離(km) 特急料金(円)
1から100まで 1500
101から200まで 2300
201から300まで 2500
301から400まで 2700
401から600まで 3100
601以上 3500

処理手順は次の通り

  1. 利用距離の入力
  2. 利用距離を下記の式で変換
  3. 変換された利用距離をswitch文で判定、特急料金を代入
  4. 特急料金を表示

入力された利用距離のままではswitch文で処理できないので次の変換の式を使って指定された範囲内にある距離を一つの値に変換するようにします。

変換された値 = (利用距離 - 1) / 100

この式を使うことで利用距離の範囲はそれぞれ次の表に示す値になります。

利用距離(km) 変換された値
1から100
0
101から200
1
201から300
2
301から400
3
401から500
4
501から600
5

問題3 .問題の自作

switch文を使ったプログラムを自作しなさい。

プログラムの概要をコメントとしてプログラム中に入力しておくこと。

// このプログラムは・・・・