からくりブログ

株式会社からくり社員のブログです

【Java SE Bronze 試験対策②】if-else-ifのひっかけ問題

昨日に引き続き第二弾です。
今日はひっかけ問題をピックアップしてきました。

問. 次のコードをコンパイル、実行したときの結果として、正しいものを選びなさい。(1つ選択)

    public class Main{
        public static void main(String[] args){
                 int x = 12 / 2;
                 int y = 2 * 3;

                 if(x > y)
                    System.out.println("A");
                 else if(x < y)
                    System.out.println("B");
                 else if(x = y)
                    System.out.println("C");
                 else
                    System.out.println("D");
          }
  }

A. 「A」と表示される
B. 「B」と表示される
C. 「C」と表示される
D. 「D」と表示される
E. コンパイルエラーになる
F. 実行時に例外が発生する

———この先答え———

答. E

if-else-if文に関する問題です。
条件式の結果は、boolean型でなければいけないことに注意してください。

設問のコード10行目「x = y」は変数に値を代入しているため結果はboolean型ではありません。
このため「互換性のない型」としてコンパイルエラーになります。
したがって選択肢「 E 」が正解です。

もしも「変数xとyが等しければ」という条件式にするためには10行目を「x == y」と修正します。

この問題は時間が足りなくなってきて焦っている後半などで出てくると要注意です。
「 x と y を評価して値が同じだな、ならば値が等しい C が答えだな」となりがちです。
落ち着いて読んでみると簡単なことなのですが、このようなひっかけは理解度と注意力を試されますね。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>