2012-10-07 133 views
0

我有這樣一段代碼:for-each循環索引

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的第一個索引?

+3

for循環迭代數組**值**,而不是**索引** *(或者是那個索引ES?)*。 –

回答

0

在第二個循環中,您通過查看Tab3的項目來打印值。

tab3[tab3[0]], tab3[tab3[1]], tab3[tab3[2]], ... 
2

在第二次循環的第一次迭代中,i等於1 ..因此tab3[i]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。

如果你通過從0到9的值循環i,你會得到你想要的值,就像這個:

for (i = 0; i < 10; ++i) 
    System.out.print(tab3[i] + " ");