問題
次のコード断片を実行し、6が出力される時の i と j の値はどうなりますか。
int[][] arrays = { { 1, 2, 3 }, { 4, 5, 6, 7 } };
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
System.out.print(arrays[i][j]);
}
}
選択肢
A)i = 1, j = 4
B)i = 1, j = 2
C)i = 1, j = 1
D)i = 0, j = 1
E)i = 0, j = 2
F)i = 1, j = 3
G)i = 0, j = 3
解答
A)i = 1, j = 4
B)i = 1, j = 2
C)i = 1, j = 1
D)i = 0, j = 1
E)i = 0, j = 2
F)i = 1, j = 3
G)i = 0, j = 3
解説
このコードを実行すると、arrays
という2次元配列があり、最初のループで i
が行を、内側のループで j
が列を表します。
この設問の2次元配列は、1つの配列内に2つの配列がある状態です。
int[][] arrays = { { 1, 2, 3 }, { 4, 5, 6, 7 } };
arrays[0]
は { 1, 2, 3 }
という配列で、長さは3です。arrays[1]
は { 4, 5, 6, 7 }
という配列で、長さは4です。
ループの挙動
- 最初のループ (i = 0):
j = 0
: 出力 1j = 1
: 出力 2j = 2
: 出力 3
- 次のループ (i = 1):
j = 0
: 出力 4j = 1
: 出力 5j = 2
: 出力 6j = 3
: 出力 7
このコードの実行結果は 1234567
ですが、6
が出力されたときの i
と j
の値は以下の通りです。
i = 1
(2番目の配列{ 4, 5, 6, 7 }
に入っている)j = 2
(6 を出力した)
結論
したがって、正しい選択肢は B)i = 1, j = 2 です。
対象資格:Java SE17 認定資格