pafuイーランスクール 学んでできる

メニューへ戻る

Java 基礎問題3 平成17年度秋期問8 解説

問題の確認

解説
a:
aはWordTableクラスのフィールドcounterと、コンストラクタの引数counterの型を指定する部分である。
WordTableのコンストラクタを呼び出す処理は、Testクラスのmainメソッドで、
引数にはWordCounterクラスおよびFirstLetterCounterクラスを指定している。
コンストラクタ引数に指定可能な型は、両方のクラスで実装しているインタフェースまたは、
両方のクラスで継承しているクラスであり、プログラムよりCounterインタフェースが正解である。
>ア Counter

b:
bはWordCounterクラスおよびFirstLetterCounterクラスで
継承(extends)や実装(implements)を指定する部分である。
aの回答およびプログラムより、Counterインタフェースを指定する必要があるため、
>エ implements Counter
が正解である。

c:
cはputメソッド内で
>int count = [c];
>if (freq.containsKey(str))
>  count += ((Integer) freq.get(str)).intValue();
>freq.put(str, new Integer(count));
と、countの初期化を行う処理である。
freq.containsKey(str)の結果によって
trueの場合:[c]で設定した初期値+((Integer)freq.get(str)).intValue()を
      freq.putでキーstrに対応する値として設定する
falseの場合:[c]で設定した初期値を〃
であるため、
strがキーとして
まだ登録されていない場合に、初期値として設定するべき値は1であり、
既に登録されている場合に、登録するべき値は(登録済みの値+1)である。
初期値としては1が正解である。
>ウ 1

d:
dはFirstLetterCounterクラスのputメソッド内で、
>[d]++;
と値をインクリメント(+1)する処理である。
FirstLetterCounterクラスのputメソッドの
呼び出し箇所は、WordTableクラスのputメソッド内で
>counter.put(st.nextToken().toLowerCase());
として呼び出しているため、toLowerCase()メソッドにより
すべて小文字の文字列が引数には指定されている。
>private int[] flFreq = new int[26];
には、配列のインデックス0~25までがアルファベットの小文字の
各文字に対応しており、指定された文字列の先頭の文字
(str.charAt(0)は文字列の先頭文字)がaの際に、
対応するflFreqの要素[0]をインクリメントするには
>オ flFreq[str.charAt(0) - 'a']
が正解。

匿名様 ご投稿

メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる