【Java SE17 Silver 模擬試験】A-43

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のみが出力されます。
このコードをコンパイル、実行すると、C)Very Good が出力される という結果になります。

  1. メインメソッド:
    • new Main().evaluate("A"); が呼ばれ、evaluate メソッドに "A" が渡されます。
  2. evaluateメソッド:
    • switch 文が "A" に対して評価されます。
    • case "A" にマッチするため、System.out.println("Very Good"); が実行されます。
  3. 出力:
    • "Very Good" が出力され、その後のケースは評価されずにメソッドが終了します。

結論

したがって、実行結果は C)Very Good が出力される です。

前の問題へ SE17_A-42

次の問題へ SE17_A-44


対象資格:Java SE17 認定資格