2011-03-28 153 views
1

我正在做一個android的骰子游戲,我有這個循環,用滾動「j」的數字滾動來填充數組。它是這樣進行的這個for循環有什麼問題?

int[] rolls = new int[6]; 
    for (int j : rolls) { 
     rolls[j] = (int) (Math.random() * 5); 
     rolls[j]++; 
     Log.i(getClass().getName(), "Rolls[" + j + "] = " + rolls[j]); 
    } 

除輸出(在日誌文件中是這樣)

Rolls[0] = 4 
Rolls[0] = 2 
Rolls[0] = 3 
Rolls[0] = 6 
Rolls[0] = 3 
Rolls[0] = 4 

當我更改代碼以這種

int[] rolls = new int[6]; 
    for (int j = 0; j < rolls.length ; j++) { 
     rolls[j] = (int) (Math.random() * 5); 

     rolls[j]++; 
     Log.i(getClass().getName(), "Rolls[" + j + "] = " + rolls[j]); 
    } 

輸出是正確的

Rolls[0] = 4 
Rolls[1] = 2 
Rolls[2] = 3 
Rolls[3] = 6 
Rolls[4] = 3 
Rolls[5] = 4 

我一定在做s某處愚蠢的東西。

+0

謝謝大家的精彩答案(他們太快了!)andersoj得到正確的答案,因爲他先回答。現在我得去講我的HS電腦老師... – Gonzo 2011-03-28 02:35:40

回答

8

聲明:

for (int j : rolls) 

在迭代中的條目rolls,而不是指數。由於Java中的數組初始化爲0,因此對於6次迭代中的每一次,值j都爲零。

2
for (int j : rolls) { 

當你做出一個新的數組,在軋輥的數量的值是0。

當您使用循環過你沒有索引信息陣列的增強。

你保證迭代結束,所以如果你自己跟蹤它,你可以這樣做。但是,如果沒有自己做,你就沒有關於它的信息。

2

在第一個,j將是每個數組元素的初始值。在這種情況下,它們都是默認的0。