【Java SE17 Silver 模擬試験】B-50

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

次のコードをコンバイル、実行するとどうなりますか。

public class Main {
	public static void main(String... args) {
		new Main().evaluate("A");
	}

	private void evaluate(String rank) {
		switch (rank) {
		case "A" -> System.out.println("Very Good");
		case "B", "C" -> System.out.println("Good");
		case "D", "E" -> System.out.println("Not Good");
		default -> System.out.println("Unknown");
		}
	}
}

選択肢

A)コンパイルエラーになる

B)Very Good Good Not Good Unknown が出力される

C)Very Good が出力される

D)Very Good Unknown が出力される

E)Very Good Good Good Not Good Not Good Unknown が出力される

解答

A)コンパイルエラーになる

B)Very Good Good Not Good Unknown が出力される

C)Very Good が出力される

D)Very Good Unknown が出力される

E)Very Good Good Good Not Good Not Good Unknown が出力される

解説

「->」を使用するとbreakと同じ意味で、一致するcaseの処理のみ実行されます。
そのため、switchでAに該当するVery Goodのみが出力されます。

実行の流れ

  1. メインメソッド:
    • プログラムが開始され、main メソッドが実行されます。
    • new Main().evaluate("A"); によって Main クラスのインスタンスが生成され、その evaluate メソッドが呼ばれます。引数には "A" が渡されます。
  2. evaluateメソッド:
    • 引数 rank"A" が渡されます。
    • switch 文が開始され、rank の値が "A" であるかどうかがチェックされます。
  3. switch文の評価:
    • case "A" -> System.out.println("Very Good"); によって "A" がマッチします。
    • この行が実行され、System.out.println("Very Good"); により “Very Good” が出力されます。
  4. 他のケースの無視:
    • "A" にマッチしたため、switch 文の残りのケース("B", "C", "D", "E", および default)は実行されません。
    • そのため、”Very Good” の出力以外は発生しません。

まとめ

  • 出力: 最終的に出力されるのは “Very Good” だけです。
  • コンパイルエラー: このコードは正しく記述されているため、コンパイルエラーは発生しません。
  • 選択肢の確認:
    • A)コンパイルエラーになる → 不正解
    • B)Very Good Good Not Good Unknown が出力される → 不正解
    • C)Very Good が出力される → 正解
    • D)Very Good Unknown が出力される → 不正解
    • E)Very Good Good Good Not Good Not Good Unknown が出力される → 不正解

このように、選択肢 C が正しい理由は、switch 文で "A" にマッチしたため、その部分だけが実行され、他の出力は無視されるからです。

前の問題へ SE17_B-49

次の問題へ SE17_B-51

対象資格:Java SE17 認定資格