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

メニューへ戻る

Java 基礎問題4 平成17年度春期問8 解説

問題の確認

解説
設問1
a:
aはMotionクラスのrunメソッド内の処理である。
>while (true) {
>  Space.draw(point);
>  try {
>    Thread.sleep(40);
>  } catch (InterruptedException e) {}
>  Point current = point;
>  [a];
>  Space.erase(current);
>}
選択肢や問題文から、aではupdateの処理を行う。
また、eraseを行うため、aの後でcurrentは更新されていてはならず、
pointはupdate後の状態に更新する必要があるため
>ウ point = update(point)
が正解。
>ア current = update(current)
>イ current = update(point)
currentが更新されるため誤り。
>エ update(current)
>オ update(point)
pointが更新されないため誤り。

b:
bはThreadコンストラクタの引数としてRunnableインタフェースを実装したクラスの
インスタンスを指定する部分である。
インスタンスを生成できるのはRunableインタフェースを実装した
抽象クラスMotionのサブクラスであるSimpleMotionクラスであるため、
>エ new SimpleMotion(points[i])
が正解である。

設問2
図より、コンストラクタに与えられたPoint(最初の位置)から
各選択肢でどのように動いているか見ると、
①:xは-方向,yは+方向に移動
②:xは+方向,yは+方向に移動
③:xは-方向,yは-方向に移動
④:xは+方向,yは-方向に移動
プログラムを見ると
SimpleMotion.updateメソッド内で
>int speed = point.getSpeed();
>int x = point.getX() + directionX * speed;
>int y = point.getY() + directionY * speed;
として、単位当りのspeedに対して、x方向の移動量がdirectionX、
y方向の移動量がdirectionYであると考えられる。
初期値の状態からの動作であるため
>private int directionX = 1, directionY = 1;
から、x方向、y方向共に+方向に移動するため
>イ 矢印 ② のように進む。
が正解。

匿名様 ご投稿

メニューへ戻る

pafuイーランスクール

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