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