0

我有这段代码:

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 吗?

4

3 回答 3

2

在第二个循环的第一次迭代中,i等于1.. 因此tab3[i]2

于 2012-10-07T05:21:30.023 回答
0

在第二个循环中,您通过查看 tab3 的项目来打印价值。

tab3[tab3[0]], tab3[tab3[1]], tab3[tab3[2]], ...
于 2012-10-07T05:28:53.707 回答
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] + " ");
于 2012-10-07T05:29:30.047 回答