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

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

問題

次のコード断片と等しい処理はどれですか。

String[] states = { "CO", "CA", "NY", "DC", "TX" };
	for (String state : states) {
		System.out.print(state + ":");
}

選択肢

A)
for (int i = 0; i <= states.length; ++i) {
	System.out.print(states[i] + ":");
}
B)
for (int i = 0; i <= states.length;) {
	System.out.print(states[i] + ":");
}
C)
for (int i = 0; i++ < states.length;) {
	System.out.print(states[i] + ":");
}
D)
for (int i = 0; i < states.length; i++) {
	System.out.print(states[i] + ":");
}
E)
for (int i = 0; i++ < states.length;) {
	System.out.print(states[i] + ":");
}

解答

A)
for (int i = 0; i <= states.length; ++i) {
System.out.print(states[i] + ":");
}
B)
for (int i = 0; i <= states.length;) {
	System.out.print(states[i] + ":");
}
C)
for (int i = 0; i++ < states.length;) {
	System.out.print(states[i] + ":");
}
D)
for (int i = 0; i < states.length; i++) {
	System.out.print(states[i] + ":");
}
E)
for (int i = 0; i++ < states.length;) {
System.out.print(states[i] + ":");
}

解説

次のコード断片と等しい処理を選ぶために、各選択肢を評価していきます。

元のコードは、states 配列の各要素をループで処理し、それぞれを表示しています。

各選択肢の評価

A)

for (int i = 0; i <= states.length; ++i) {
System.out.print(states[i] + ":");
}
  • 評価: i のインデックスが states.length まで到達するため、ArrayIndexOutOfBoundsException が発生します。不適切

B)

for (int i = 0; i <= states.length;) {
System.out.print(states[i] + ":");
}
  • 評価: インデックスが states.length まで進むことがないため、最初のループで ArrayIndexOutOfBoundsException が発生します。不適切

C)

for (int i = 0; i++ < states.length;) {
System.out.print(states[i] + ":");
}
  • 評価: i++ がループ条件に使用され、最初のループで i0 のまま states[0] を印刷しますが、その後 i1 になり、次のループでは states[1] が印刷されます。最後には i5 になり、ArrayIndexOutOfBoundsException が発生します。不適切

D)

for (int i = 0; i < states.length; i++) {
System.out.print(states[i] + ":");
}
  • 評価: 正しい構文で、配列の全要素を正常に印刷します。適切

E)

for (int i = 0; i++ < states.length;) {
System.out.print(states[i] + ":");
}
  • 評価: ループ条件に i++ を使用していますが、最初のループで i0 のまま states[0] を印刷し、その後 i1 になり、正常に動作するかのように見えますが、最後に i5 になり、ArrayIndexOutOfBoundsException が発生します。不適切

前の問題へ SE17_B-44

次の問題へ SE17_B-46

対象資格:Java SE17 認定資格