我正在制作一个用于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
我必须在某处做些蠢事。
答案 0 :(得分:8)
声明:
for (int j : rolls)
迭代rolls
中的条目,而不是索引。由于数组在Java中初始化为0,因此对于6次迭代中的每次迭代,值j
都为零。
答案 1 :(得分:2)
for (int j : rolls) {
创建新数组时,roll中的数字值为0.
在数组上使用增强型for循环时,您没有索引信息。
你可以保证迭代,所以如果你自己跟踪它,你就可以做到。但是如果没有自己做,你就没有关于它的信息。
答案 2 :(得分:2)
在第一个中,j
将是每个数组元素的初始值。在这种情况下,它们都是0,默认值。