以下に「条件分岐」について、Java Bronze試験を想定した問題と解答解説を記載します。


問題1: if文の基本

以下のコードを実行した場合、出力される結果を選びなさい。

package chap04;

public class Example {
    public static void main(String[] args) {
        int age = 19;
        if (age >= 20) {
            System.out.println("酒を飲む");
        }
        System.out.println("煙草も吸う");
    }
}

選択肢:

  1. 酒を飲む
  2. 酒を飲む
    煙草も吸う
  3. 煙草も吸う
  4. 何も出力されない

解答と解説

解答: 3

解答解説:

  • 選択肢1: 誤りです。このコードでは age >= 20false なので "酒を飲む" は出力されません。
  • 選択肢2: 誤りです。同上。条件が false のため "酒を飲む" は出力されませんが、"煙草も吸う" は if 文外にあるため出力されます。
  • 選択肢3: 正解。"煙草も吸う" は if 文に含まれないため常に実行されます。
  • 選択肢4: 誤りです。"煙草も吸う" は必ず出力されます。

問題2: if-else文の構造

以下のコードを実行した場合、出力される結果を選びなさい。

package chap04;

public class Example {
    public static void main(String[] args) {
        int age = 20;
        if (age >= 20) {
            System.out.println("酒を飲む");
        } else {
            System.out.println("ジュースを飲む");
        }
    }
}

選択肢:

  1. 酒を飲む
  2. ジュースを飲む
  3. 何も出力されない
  4. 実行時エラーが発生する

解答と解説

解答: 1

解答解説:

  • 選択肢1: 正解。age >= 20true であるため、"酒を飲む" が出力されます。
  • 選択肢2: 誤りです。else 部分は age >= 20false の場合に実行されますが、今回は true なので実行されません。
  • 選択肢3: 誤りです。必ずどちらかのブロックが実行されます。
  • 選択肢4: 誤りです。このコードに構文エラーや実行時エラーはありません。

問題3: 関係演算子

次のコードを実行した場合、正しい出力を選びなさい。

package chap04;

public class Example {
    public static void main(String[] args) {
        int a = 15;
        System.out.println(a >= 20);
        System.out.println(a < 20);
    }
}

選択肢:

  1. true
    true
  2. false
    true
  3. true
    false
  4. false
    false

解答と解説

解答: 2

解答解説:

  • 選択肢1: 誤りです。a >= 20false のため、最初の出力は false です。
  • 選択肢2: 正解。a >= 20falsea < 20true です。したがって出力は falsetrue になります。
  • 選択肢3: 誤りです。同上。
  • 選択肢4: 誤りです。a < 20true ですので、2番目の出力が誤っています。

問題4: 論理演算子

以下のコードを実行した場合、出力される結果を選びなさい。

package chap04;

public class Example {
    public static void main(String[] args) {
        int english = 85;
        int math = 75;
        if (english >= 80 && math >= 80) {
            System.out.println("S");
        } else if (english >= 80 || math >= 80) {
            System.out.println("A");
        } else {
            System.out.println("B");
        }
    }
}

選択肢:

  1. S
  2. A
  3. B
  4. C

解答と解説

解答: 2

解答解説:

  • 選択肢1: 誤りです。english >= 80true ですが、math >= 80false なので、S は出力されません。
  • 選択肢2: 正解。english >= 80 || math >= 80true なので "A" が出力されます。
  • 選択肢3: 誤りです。english >= 80 || math >= 80 の条件が true のため、B の出力にはなりません。
  • 選択肢4: 誤りです。同上。"C" はどちらの条件にも該当しない場合に出力されますが、今回は該当します。

問題5: 三項演算子

以下のコードを実行した場合、出力される結果を選びなさい。

package chap04;

public class Example {
    public static void main(String[] args) {
        int score = 90;
        String grade = score >= 80 ? "A" : "B";
        System.out.println(grade);
    }
}

選択肢:

  1. A
  2. B
  3. C
  4. 実行時エラーが発生する


解答と解説

解答: 1

解答解説:

  • 選択肢1: 正解。score >= 80true のため、三項演算子の真の部分 "A" が評価されます。
  • 選択肢2: 誤りです。score >= 80true なので、"B" は評価されません。
  • 選択肢3: 誤りです。三項演算子の条件に "C" はありません。
  • 選択肢4: 誤りです。このコードには構文エラーや実行時エラーはありません。