我有这段代码:
int[] tab2 = {1, 2, 3, 4, 5, 6 ,7, 8, 9, 0};
for(int i : tab2)
System.out.print(i + " ");
int[] tab3 = {1, 2, 3, 4, 5, 6 ,7, 8, 9, 0};
for(int i : tab3)
System.out.print(tab3[i] + " ");
第一个循环给了我1 2 3 4 5 6 7 8 9 0
而第二个给了我2 3 4 5 6 7 8 9 0 1
怎么来的?不是数组0的第一个索引吗?答案 0 :(得分:2)
在第二个循环的第一次迭代中,i
等于1
..因此tab3[i]
为2
。
答案 1 :(得分:0)
在第二个循环中,您可以通过查看tab3项目来打印价值。
tab3[tab3[0]], tab3[tab3[1]], tab3[tab3[2]], ...
答案 2 :(得分:0)
在每种情况下,for循环都会导致i
采用数组中的每个值。第一个循环打印出每个值,正如您所期望的那样。
但是在第二个循环中,这些值被用作tab3[]
数组的索引。
当i
取值1,2,3,4,5,6,7,8,9,0时,
打印值为tab3[1]
,tab3[2]
,...,tab3[0]
,
正如你所写,它是2,3,4,5,6,7,8,9,0,1。
如果循环i
通过0到9之间的值,您将得到预期的值,如下所示:
for (i = 0; i < 10; ++i)
System.out.print(tab3[i] + " ");