![]()
平成17年 春期 基本情報技術者 午後 問12
問12 Java次の Java プログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラムの説明〕 整数値の加減乗除の演算をする電卓プログラムである。 入出力部分はテスト用のプログラムによって用意され,電卓本体部分のプログラムの テストができるようになっている。 (1) クラス CalculatorEvent は電卓のキーが押されたときに発生するイベントである。 イベントにはタイプがありフィールド type の値で表される。 タイプは DIGIT,OPERATOR,CLEAR のいずれかであり,それぞれ電卓の数字キー(0〜9), 演算キー(+ など)及びイコールキー(=),クリアキー(C)を表す。 タイプが DIGIT のときは数字キーに対応する数値を,OPERATOR のときは演算の種類を 表す文字又は '=' をフィールド value に保持する。 タイプが CLEAR のときは,value は使用しない。 (2) インタフェース CalculatorOutput は,電卓上に数値やエラーを 表示するメソッド display を宣言する。 (3) クラス Calculator は電卓本体である。 メソッド eventDispatched はイベントを受け取り,イベントのタイプに応じて演算処理などを行う。 なお,二つの数値に対する加減乗除の演算結果は Java の int 型の演算結果に一致するものとする。 (4) クラス CalculatorTest は Calculator をテストするプログラムである。
例えば,文字列“2+7=”は,電卓キー 2,+,7,= が順に押されたことを表し, この文字列が引数 args[0] としてメソッド main に渡されたとき,プログラムは次のとおり出力する。
〔プログラム 1〕 public class CalculatorEvent { public static final int DIGIT = 1; public static final int OPERATOR = 2; public static final int CLEAR = 3; private int type, value; public CalculatorEvent(int type) { 〔プログラム 2〕 public interface CalculatorOutput { public void display(int value); public void display(String value); } 〔プログラム 3〕 public class Calculator { private int accumulator = 0, register = 0; private int operator = 0; private CalculatorOutput output; public Calculator(CalculatorOutput output) { this.output = output; } public void eventDispatched(CalculatorEvent event) { switch (event.getType()) { case CalculatorEvent.DIGIT: if (operator == '=') { register = 0; operator = 0; } register = register * 10 + event.getValue(); output.display(register); break; case CalculatorEvent.OPERATOR: try { register = calculate(); output.display(register); accumulator = register; operator = event.getValue(); } catch (ArithmeticException e) { output.display("Error"); accumulator = 0; operator = 0; } if (operator != '=') register = 0; break; case CalculatorEvent.CLEAR: register = 0; accumulator = 0; operator = 0; output.display(register); break; } } private int calculate() { switch (operator) { case '+': return accumulator + register; case '-': return accumulator - register; case '*': return accumulator * register; case '/': return accumulator / register; } return register; } }
〔プログラム 4〕 public class CalculatorTest { public static void main(String[] args) { Calculator calc = new Calculator(
設問1 プログラム中の
a に関する解答群 ア CalculatorEvent(type, 0) イ new CalculatorEvent(type, 0) ウ return new CalculatorEvent(type, 0) エ super(type, 0) オ this(type, 0) b に関する解答群 ア implements CalculatorOutput() イ interface CalculatorOutput() ウ new CalculatorOutput() エ new Temp() implements CalculatorOutput オ public class Temp implements CalculatorOutput c に関する解答群 ア c - '0', CalculatorEvent.DIGIT イ c, CalculatorEvent.DIGIT ウ CalculatorEvent.DIGIT エ CalculatorEvent.DIGIT, c オ CalculatorEvent.DIGIT, c - '0'
設問2 次の表は文字列を引数としてメソッド main を実行したときに,
最後に出力された結果を表している。
表中の
解答群 ア 0 イ 3 ウ 4 エ 5 オ 7 カ 12 キ 17 ク 53 ケ / by zero コ Error
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||||||||||||||