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

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

問題

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

public class Main {
	public static void main(String... args) {
		final var b = 2;
		var a = b;
		while (a < 5) {
			switch (a % 2) {
			case 0:
				++a;
				break;
			case 1:
				a++;
			default:
				break;
			}
		}
		System.out.println(a);
	}
}

選択肢

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

B)4 が出力される

C)6 が出力される

D)5 が出力される

E)2 が出力される

F)3 が出力される

G)while ループが終了せず何も出力されない

解答

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

B)4 が出力される

C)6 が出力される

D)5 が出力される

E)2 が出力される

F)3 が出力される

G)while ループが終了せず何も出力されない

解説

実行の流れ

  1. b は 2 で初期化され、a も 2 になります。
  2. while ループが a < 5 の条件で始まります。

ループの繰り返し

  • 1回目 (a = 2):
    • switch (2 % 2)case 0 になります。
    • ++a により a は 3 になります。
  • 2回目 (a = 3):
    • switch (3 % 2)case 1 になります。
    • a++ により a は 4 になります。
    • break がないため、default: に進みますが、何も実行されず(break だけ)。
  • 3回目 (a = 4):
    • switch (4 % 2)case 0 になります。
    • ++a により a は 5 になります。
  1. ループが再度実行されると a < 5 の条件が成り立たず、ループを終了します。

結果

System.out.println(a); により、最終的に a の値である 5 が出力されます。

したがって、正解は D)5 が出力される です。

前の問題へ SE17_B-15

次の問題へ SE17_B-17

対象資格:Java SE17 認定資格