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

メニューへ戻る

Java 応用問題6 平成16年度春期問12 解説

問題の確認

解説
a:
aはCharIteratorFactoryクラスのgetCharIteratorメソッドの
return文にCharIteratorインタフェースを実装したクラスの
インスタンスを指定する部分である。
直前のコメントに
>// Stringデータから文字を順番に返すCharIteratorのインスタンス
>// を生成して返す。
とあり、CharIteratorインタフェースを実装したクラスは、
StringCharIteratorとChar2DArrayCharIteratorの2つである。
aの場合は、引数のString dataから
>StringCharIterator(String data) {
のStringCharIteratorのコンストラクタを呼び出して、
StringCharIteratorクラスのインスタンスを
作成する処理であると考えられるため、
>カ new StringCharIterator(data)
が正解。

b:
aと同様である。
直前のコメントに
>// 2次元の文字配列から文字を順番に返すCharIteratorのインスタンス
>// を生成して返す。
とあり、
bの場合は、引数のchar[][] dataから
>Char2DArrayCharIterator(char[][] data) {
のChar2DArrayCharIteratorのコンストラクタを呼び出して、
Char2DArrayCharIteratorクラスのインスタンスを
作成する処理であると考えられるため、
>エ new Char2DArrayCharIterator(data)
が正解。

c:
StringCharIteratorクラスのboolean hasNext()メソッドのreturn文に
値を設定する部分であるため、booleanの値である必要がある。
hasNext()メソッドについては問題文に
>次の文字があればtrueを返し,なければfalseを返す。
の説明があり、選択肢で比較処理を行っている
indexとdata.length()の関係としては、
next()メソッド内で例外を返す条件となっている
>if (index >= data.length())
の逆となるように
>ア index < data.length()
が正解。

d:
StringCharIteratorクラスのchar next()メソッドのreturn文に
値を設定する部分であるため、charの値である必要がある。
直前のコメントに
// dataの次の文字を返し,インデックス値を更新する。
とあり、
>エ data.charAt(index++)
とすれば、戻り値としてはインクリメント前のindexの文字となり、
indexがインクリメントされるため正解。

e:
Char2DArrayCharIteratorクラスのboolean hasNext()メソッド内で、
>for (; index1 < data.length; index1++) {
>  if (data[index1] != null
>     && index2 < data[index1].length) {
>    return true;
>  }
>  [e];
>}
eに必要な処理は、
data[index1] == nullまたはindex2 >= data[index1].length
となった時に、for文のindex1++が行われる前に
行う処理であり、
>エ index2 = 0
によって、index2の位置を先頭の0に設定するのが正解。

f:
eの部分で見たプログラムの内容から、
next()メソッドを実行する際にインクリメントする必要があるのは
index2のみであるため
>カ data[index1][index2++]
が正解。

匿名様 ご投稿

メニューへ戻る

pafuイーランスクール

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