問題
次のコードをコンバイル、実行するとどうなりますか。
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 が出力される という結果になります。
- メインメソッド:
new Main().evaluate("A");
が呼ばれ、evaluate
メソッドに"A"
が渡されます。
- evaluateメソッド:
switch
文が"A"
に対して評価されます。case "A"
にマッチするため、System.out.println("Very Good");
が実行されます。
- 出力:
"Very Good"
が出力され、その後のケースは評価されずにメソッドが終了します。
結論
したがって、実行結果は C)Very Good が出力される です。
対象資格:Java SE17 認定資格