基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成16年 春期 基本情報技術者 午後 問08
問08   Java

〔プログラムの説明〕

このプログラムは,数量の単位変換を行う共通機能を提供するクラス群と, それらのテストプログラムからなる。 テストプログラムでは,セルシウス温度(セ氏温度,゜C)及びカ氏温度 (゜F)の変換を行うクラスを利用する。

(1) インタフェース Converter は,単位変換を行うクラスが実装すべき インタフェースを定義する。

(2) クラス ConverterRunner は,単位変換クラスを利用するプログラムから アクセスするためのクラスである。

  @ メソッド setConverter は,単位変換クラスのインスタンスを設定する。

  A メソッド run は,単位変換クラスのメソッド convert を呼び出す。

(3) クラス CtoF は,セ氏温度の値を,カ氏温度に変換する処理を実装するクラスである。

(4) クラス FtoC は,カ氏温度の値を,セ氏温度に変換する処理を実装するクラスである。

(5) クラス TestConverter は,単位変換クラスを利用するテストプログラムである。 メソッド main は,実行すべき単位変換処理(1 : カ氏−セ氏変換, 2 : セ氏−カ氏変換,q : 終了)の選択を促してから, 入力された値を指定された処理に従って変換する。 実行例を図に示す。

% java TestConverter
Type 1(FtoC), 2(CtoF), or q(Quit): 1   
Type input value: 68
20.0

   図 クラス TestConverter の実行例

〔プログラム 1〕

public interface Converter {
   
}

〔プログラム 2〕

public class ConverterRunner {
   private  conv;
   public void setConverter( conv) {
      this.conv = conv;
   }
   public void run(String input) {
      if (conv == null) return;
      try {
         double in = Double.parseDouble(input);
         double out = conv.convert(in);
         System.out.println(out);
      } catch (NumberFormatException e) {
         System.err.println("invalid input " + input);
      }
   }
}

〔プログラム 3〕

public class CtoF  {
   public double convert(double input) {
      return 9.0 / 5.0 * input + 32.0;
   }
}

〔プログラム 4〕

public class FtoC  {
   public double convert(double input) {
      return 5.0 / 9.0 * (input - 32.0);
   }
}

〔プログラム 5〕

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class TestConverter {
   public static void main(String[] args) {
      // 標準入力から入力を受け取る reader を作成する
      BufferedReader reader = 
         new BufferedReader(new InputStreamReader(System.in));
      ConverterRunner runner = new ConverterRunner();
      try {
         while (true) {
            System.out.print("Type 1(FtoC), 2(CtoF), " +
                             "or q(Quit): ");
            // 標準入力から1行読み込む
            String choice = reader.readLine();
            if ("1".equals(choice)) {
               runner.setConverter(new FtoC());
            } else if ("2".equals(choice)) {
               runner.setConverter(new CtoF());
            } else if ("q".equals(choice)) {
               break;
            } else continue;
            System.out.print("Type input value: ");
            // 標準入力から1行読み込む
            String value = reader.readLine();
            
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

基本情報技術者試験


設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a に関する解答群

ア abstract public void convert();

イ public double convert(double input) { }

ウ public double convert(double input);

エ public double convert(String input);

b に関する解答群

ア Converter

イ ConverterRunner

ウ CtoF

エ FtoC

c に関する解答群

ア extends Converter

イ extends ConverterRunner

ウ implements Converter

エ implements ConverterRunner

d に関する解答群

ア runner.conv.convert(Double.parseDouble(value));

イ runner.conv.run(value);

ウ runner.convert(Double.parseDouble(value));

エ runner.run(value);

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]