ここでは、当社の新人研修受講者に向けて、基本情報のJavaの過去問を掲載しています。

想定しているのは、NetBeansなどのIDEにコピー・ペーストしたうえで、自分の正しいと思う答えを埋めて動作を確認するという使い方です。


次の Java プログラムの説明及びプログラムを読んで,設問に答えよ。

〔プログラムの説明〕

 インタフェース CharIterator は,データ構造に依存せずに そのインスタンスから文字(char)を順番に取り出すための操作を定義する。 CharIterator には,次のメソッドが定義されている。

 public char next()

次の文字があればそれを返し,なければ java.util.NoSuchElementException を投げる。例えば,この CharIterator インスタンスが文字を n 個もっているとき,最初の呼出しで 1番目の文字を返し,2 回目の呼出しで2番目の文字を返し,…というように, n 回目の呼出しまで文字を順番に返していく。 n +1回目以降の呼出しでは, NoSuchElementException を投げる。

なお,NoSuchElementException は java.lang.RuntimeException のサブクラスである。

 public boolean hasNext()

次の文字があれば true を返し,なければ false を返す。

クラス CharIteratorFactory は,引数に指定したデータ型に一致した CharIterator を返すメソッドを定義する。 CharIteratorFactory には,次のクラスメソッドが定義されている。

 public static CharIterator getCharIterator(String data)

引数に指定した String から文字を順番に取り出す CharIterator を返す。 引数に null が指定されたときは,NullPointerException を投げる。

 public static CharIterator getCharIterator(char[][] data)

引数に指定した char を要素型とする配列の配列(2次元の文字配列) から文字を順番に取り出す CharIterator を返す。引数に null が指定されたときは,NullPointerException を投げる。 文字を取り出す順序は,文字配列とその配列のそれぞれのインデックス値の小さい順とする。すなわち,char[][] 型の m に対し,その要素 m[i][j] を i の小さい順, 同じ i に対しては j の小さい順に取り出す。

クラス CharIteratorTest は,CharIteratorFactory で 定義されたメソッドをテストするためのプログラムである。 メソッド main を実行すると,図の実行結果が得られる。

図

[プログラム1]

[プログラム2]

[プログラム3]

設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a,b に関する解答群

ア getCharIterator((char[][]) data)

イ getCharIterator((String) data)

ウ new Char2DArrayCharIterator()

エ new Char2DArrayCharIterator(data)

オ new StringCharIterator()

カ new StringCharIterator(data)

c に関する解答群

ア index < data.length()     イ index <= data.length()

ウ index >= data.length()     エ index++ < data.length()

オ index++ <= data.length()   カ index++ >= data.length()

d に関する解答群

ア data.charAt(++index)    イ data.charAt(–index)

ウ data.charAt(index + 1)    エ data.charAt(index++)

オ data.charAt(index–)      カ data.charAt(index)

e に関する解答群

ア index1 = 0         イ index1 = data.length

ウ index1 = index2       エ index2 = 0

オ index2 = data.length    カ index2 = index1

f に関する解答群

ア data[index1++][index2++]    イ data[index1++][index2]

ウ data[index1][++index2]      エ data[index1][–index2]

オ data[index1][index2 + 1]      カ data[index1][index2++]