平成25年 春期 基本情報技術者 午後 問11
問11 Java次の Java プログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラムの説明〕 あみだくじの作成と結果の表示を行うプログラムである。 あみだくじとは,複数の平行に並ぶ縦線と,2本の縦線だけに水平に接続する複数の 横線から成るくじである。横線は縦線の上端及び下端には接続せず,縦線の同一箇所に 複数の横線が接続されることもない。くじをたどる手順は次のとおりである。 (1) 1本の縦線を選択し,上端から下方向にたどり始める。 (2) 途中に,接続する横線があるときは必ず曲がり,もう一方の縦線までたどる。 (3) 縦線に到達したら,また下方向にたどる。 (4) 下端に到達するまで (2) と (3) を繰り返す。 (5) 下端に到達したときの縦線の位置が,くじを引いた結果である。 あみだくじの例を図1に示す。図中の太線は,左端の縦線を選択したときにたどった経路である。
図1 あみだくじの例 クラス GhostLeg は,あみだくじを作成し,作成したあみだくじをたどるプログラムである。 (1) 縦線を左からの順番で保持する。左端を0番目とする。 (2) 縦線の長さを 1.0 とし,上端の縦軸座標を 1.0 ,下端の縦軸座標を 0.0 とする。 (3) 横線の両端の縦軸座標は等しく, 0.0 よりも大きく 1.0 未満である。 (4) 縦線の本数を引数とするコンストラクタをもつ。 (5) 次のメソッドをもつ。 横線を追加するメソッドである。左から x1 番目の縦線と x2 番目の縦線を縦軸座標 y で 接続する横線を追加する。ただし, x1 と x2 が等しいか,2本の縦線のいずれか又は両方に, 既に縦軸座標 y で接続する横線があるときには追加しない。 あみだくじは,クラス GhostLeg のインスタンスを生成した後,このメソッドを 任意の回数だけ呼び出し,横線を追加することによって完成する。 A int trace(int x) くじを引いた結果を返すメソッドである。左から x 番目の縦線を選択し, あみだくじをたどった結果を返す。
図2 クラス GhostLegTester の実行結果 〔プログラム1〕
import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
public class GhostLeg {
private List<VerticalLine> verticalLines;
public
〔プログラム2〕
public class GhostLegTester {
public static void main(String[] args) {
GhostLeg gh = new GhostLeg(4);
gh.addHorizontalLine(0, 1, 0.8);
gh.addHorizontalLine(0, 1, 0.2);
gh.addHorizontalLine(1, 2, 0.4);
gh.addHorizontalLine(2, 3, 0.6);
gh.addHorizontalLine(2, 3, 0.2);
for (int i = 0; i < 4; i++) {
System.out.printf("%d -> %d%n", i, gh.trace(i));
}
}
}
設問1 次の記述中の
クラス GhostLeg の内部クラス VerticalLine は1本の縦線を表すクラスであり,
インスタンスは,そのインスタンスが示す縦線に接続している横線を保持している。
この内部クラスでは,横線を, 解答群 イ その横線が接続する縦軸座標とクラス HorizontalLine のインスタンスのマップ ウ その横線が接続する縦軸座標とその横線に接続するもう1本の縦線のマップ エ その横線に接続する2本の縦線のマップ 設問2 プログラム中の に入れる正しい答えを,
解答群の中から選べ。
a に関する解答群 ウ void ghostLeg エ void GhostLeg b に関する解答群 ウ new VerticalLine() エ null c に関する解答群 d に関する解答群 ウ v.getOpposite(y) エ verticalLines.get(x)
設問3 次の記述中の に入れる正しい答えを,
解答群の中から選べ。
メソッド addHorizontalLine の呼出しにおいて,引数 x1 又は x2 に相当する縦線が ないときには IndexOutOfBoundsException が投げられる。一方,引数 y には追加する横線の 縦軸座標を指定するので,その値は 0.0 よりも大きく 1.0 未満でなければならないが, それ以外の値を指定しても例外は投げない。
これを,引数 x1 及び x2 の値によらず,引数 y の値が横線の縦軸座標として
取り得る範囲から外れているときに IllegalArgumentException を投げるよう
にするには,プログラム1中のコメント“// 設問3(
if ( e に関する解答群 f に関する解答群 ウ y > 0.0 && y < 1.0 エ y > 0.0 || y < 1.0
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2025 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |
