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

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

問題

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

public class Main {
	public static void main(String... args) {
		int[] score = { 60, 90, 100, 95, 30, 80, 100, 65 };
		for (int i : score) {
			System.out.print(Test.evaluate(i));
		}
	}
}

class Test {
	public static String evaluate(int value) {
		return switch (value) {
		case 10, 20 -> "D";
		case 30, 40 -> "C";
		case 50, 60, 70 -> "B";
		case 80, 90 -> "A";
		case 100 -> "S";
		default -> "E";
		};
	}
}

選択肢

A)ClassCastException がスローされる

B)BASACASB が出力される

C)Main クラスでコンパイルエラーになる

D)BBASECCAASE が出力される

E)BASE が出力される

F)Test クラスでコンパイルエラーになる

G)BASECASE が出力される

H)BBASACCAASB が出力される

解答

A)ClassCastException がスローされる

B)BASACASB が出力される

C)Main クラスでコンパイルエラーになる

D)BBASECCAASE が出力される

E)BASE が出力される

F)Test クラスでコンパイルエラーになる

G)BASECASE が出力される

H)BBASACCAASB が出力される

解説

evaluate メソッドのスイッチ文

  • スコア 60: case 50, 60, 70 にマッチ → “B”
  • スコア 90: case 80, 90 にマッチ → “A”
  • スコア 100: case 100 にマッチ → “S”
  • スコア 95: どのケースにもマッチしない → “E”
  • スコア 30: case 30, 40 にマッチ → “C”
  • スコア 80: case 80, 90 にマッチ → “A”
  • スコア 100: case 100 にマッチ → “S”
  • スコア 65: case 50, 60, 70 にマッチ → “B”

結果の連結

上記の結果をまとめると、次のようになります:

  • 60 → “B”
  • 90 → “A”
  • 100 → “S”
  • 95 → “E”
  • 30 → “C”
  • 80 → “A”
  • 100 → “S”
  • 65 → “B”

これを連結すると、“BASECASB” になります。

出力結果

したがって、正しい選択肢は H)BASECASB が出力されることになります。

前の問題へ SE17_B-52

次の問題へ SE17_B-54

対象資格:Java SE17 認定資格