这个for循环有什么问题?

时间:2011-03-28 02:13:30

标签: java android

我正在制作一个用于Android的骰子游戏,我有这个循环填充一个数组滚动的数字滚动“j”。它就像这样

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

我必须在某处做些蠢事。

3 个答案:

答案 0 :(得分:8)

声明:

 for (int j : rolls) 

迭代rolls中的条目,而不是索引。由于数组在Java中初始化为0,因此对于6次迭代中的每次迭代,值j都为零。

答案 1 :(得分:2)

for (int j : rolls) {

创建新数组时,roll中的数字值为0.

在数组上使用增强型for循环时,您没有索引信息。

你可以保证迭代,所以如果你自己跟踪它,你就可以做到。但是如果没有自己做,你就没有关于它的信息。

答案 2 :(得分:2)

在第一个中,j将是每个数组元素的初始值。在这种情况下,它们都是0,默认值。