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'] が正解。 |
匿名様 ご投稿
メニューへ戻る