問題
以下のコード内の [ A ] に選択肢の中から当てはめてコンパイルエラーにならないものはどれか。(1つ選択)
public class Main {
public static void main(String[] args) {
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for( [ A ] ) {
if (i % 2 == 0)
System.out.print(i + " ");
}
}
}
選択肢
A) i : nums
B) int i = 0; ++i < nums.length;
C) var i = 0; i < nums.length; i++
D) int i = 1; i < nums.length; i++
E) var i = 1; i < nums.length; ++i
F) int i = 0 : nums
解答
A) i : nums
B) int i = 0; ++i < nums.length;
C) var i = 0; i < nums.length; i++
D) int i = 1; i < nums.length; i++
E) var i = 1; i < nums.length; ++i
F) int i = 0 : nums
解説
次のコードの [ A ]
に記述する正しい選択肢は C) var i = 0; i < nums.length; i++ です。この選択肢が正しい理由を以下に説明します。
- C) var i = 0; i < nums.length; i++:
- この選択肢は、
i
を 0 から始め、nums
の配列の長さ (nums.length
) より小さい間ループを続け、ループの最後でi
をインクリメントします。これにより、nums
配列の全ての要素にアクセスでき、正しく偶数を出力できます。
- この選択肢は、
他の選択肢についての評価
- A) i : nums:
- これは不正な構文です。コロンは使用できません。
- B) int i = 0; ++i < nums.length;:
- この選択肢では、
i
の初期値が 0 ですが、++i
を使用するため、ループ開始時にi
は 1 になってしまいます。したがって、最初の要素 (1) にアクセスできません。
- この選択肢では、
- D) int i = 1; i < nums.length; i++:
i
を 1 から開始すると、最初の要素 (1) がスキップされ、2 以降の偶数のみが出力されます。
- E) var i = 1; i < nums.length; ++i:
- 同様に、
i
を 1 から始めるため、最初の要素 (1) をスキップします。
- 同様に、
- F) int i = 0 : nums:
- これは不正な構文です。コロンは使用できません。
結論
したがって、正しい選択肢は C) var i = 0; i < nums.length; i++ です。これにより、1 から 10 までの全ての要素を正しく処理できます。
対象資格:Java SE17 認定資格