問題
次の配列があります。
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
となっているため、最初の条件で i
が 0
の場合に states[0]
にアクセスし、次のイテレーションで i
が 1
となり、問題はありませんが、他の選択肢と比べると理解しにくく、適切ではありません。
C と D は i <= states.length
としているため、i
が states.length
になると ArrayIndexOutOfBoundsException
が発生します。これは配列の範囲外アクセスです。
対象資格:Java SE17 認定資格