平成28年秋期午後問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
ありんこさん  
(No.1)
https://www.fe-siken.com/kakomon/28_aki/pm11.html

空欄cに関しての解説に関してうまく理解できない部分があるので、説明していただけると助かります。

ここから解説文---------------------------
[c]には押されたキーに対応する数値を得るための式が入ります。選択肢の中でこれに当てはまるのは ordinal() です。このメソッドは列挙型で使用でき、定数の序数(定義された順番)を返します。例えば、クラス Calculator の onKeyPress の引数に DIGIT1 が与えられると、内部で operateOn(DIGIT1) が呼ばれます。このとき ordinal() は、列挙型 DigitKey 内での DIGIT1 の順番、すなわち1を返すことになります。なお、values()は、列挙型で定義された列挙子のリストを返すので誤りです。
ここまで解説文---------------------------

上記解説内の、クラス Calculator の onKeyPress の引数に DIGIT1 が与えられると、内部で operateOn(DIGIT1) が呼ばれます

の部分ですが、
自分の認識だと、クラスCalculatorのonKeyPressの引数に、DigitKeyのインスタンスとしてkey(DIGIT1とする)が与えられると、key.operateOn(stack)を呼び出して、
stack.push(stack.pop*10+ordinal())が実行される流れだと思っていて、
この時列挙型のインスタンスkeyが持つ値?(DIGIT1)の序数を取得する為にordinal()を使用する流れだと思っています。

その為、operateOn(DIGIT1)が呼ばれるという表現がいまいち理解できません。
operateOnには引数としてスタックが与えられますが、そもそもDIGIT1はスタックではないのでは?と思っています。

列挙型に関しての知識が乏しいので勘違いなどしているのかもしれません。
お手数ですがご確認お願い致します。
2021.02.28 20:58
管理人 
(No.2)
ご指摘ありがとうございます。
解説がいまいちだったので以下のように書き換えました。これでどうでしょう?

例えば、クラス Calculator の onKeyPressed の引数に DIGIT1 が与えられたとき、クラス Calculator は、【DIGIT1 について operateOn() を呼び出します】。このとき ordinal() は、列挙型 DigitKey 内での DIGIT1 の順番、すなわち1を返すことになります。
2021.03.01 18:17
ありんこさん  
(No.3)
上記の説明だと自分としては理解がしやすいです。

自分としては、自分の認識(考え方)が間違っていないかどうかを確認したかったので助かりました。
丁寧に回答いただきありがとうございます!
2021.03.02 11:05

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop