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

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;) {
	System.out.print(states[i] + ":");
     }
B) for (int i = 0; i < states.length; i++) {
	System.out.print(states[i] + ":");
     }
C) for (int i = 0; i <= states.length; i++) {
	System.out.print(states[i] + ":");
     }
D) for (int i = 0; i <= states.length; ++i) {
	System.out.print(states[i] + ":");
     }

解答

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

解説

B は配列のインデックスを 0 から states.length - 1 までループするため、配列のすべての要素に正しくアクセスします。よって正解です。
A は条件が i++ < states.length となっているため、最初の条件で i0 の場合に states[0] にアクセスし、次のイテレーションで i1 となり、問題はありませんが、他の選択肢と比べると理解しにくく、適切ではありません。
CDi <= states.length としているため、istates.length になると ArrayIndexOutOfBoundsException が発生します。これは配列の範囲外アクセスです。

前の問題へ SE17_A-13

次の問題へ SE17_A-15


対象資格:Java SE17 認定資格