增强的 For 循环不会更改数组的所有元素
Enhanced For Loop not changing all elements of my array
我目前正在开发一个程序,该程序将掷 5 个骰子并将每个骰子的随机数存储在一个数组中。
我的问题是我的方法只更改第一个元素,而将其余元素保留为 0。 (可以说只掷第一个骰子)
我用 5 个值初始化了一个数组,然后 运行 这个方法将一个数组作为参数,检查元素是否为 0,如果是,它会分配一个 1 到 6 之间的随机值。
我试过做一个增强的 for 循环来查看数组中的每个元素,理论上如果它为零,它会为其分配一个 1 到 6 之间的随机整数。
public static void rollDice(int[] dice) {
for (int element: dice) {
int roll = (int)(Math.random()*6) + 1;
if (element == 0) {
dice[element] = roll;
}
}
我目前的结果是:[随机数, 0, 0, 0, 0]
我的预期结果是:[5 个随机整数]
public static void rollDice(int[] dice) {
for (int i=0;i<dice.length;i++) {
int roll = (int)(Math.random()*6) + 1;
if (dice[i]== 0) {
dice[i] = roll;
}
}
您将索引 0 更改了 5 次,因为您将数组位置 0 的值作为要更改的索引
这种形式的 Java for
循环遍历 values,而不是 indexes,阵列。所有值都是 0
并且您将它们用作索引。因此,您将第一个元素设置了 5 次。
使用传统的 for
循环。
for (int index = 0; index < dice.length; index++) {
// Your roll here
dice[index] = roll;
}
这里
if (element == 0) {
dice[element] = roll;
}
你的代码说如果它是第一个元素,那么存储随机化的结果。由于其他元素不是第一个元素,在其他元素的情况下,条件将为假,因此不会存储卷。如果出现以下情况,请删除此内容:
//if (element == 0) {
dice[element] = roll;
//}
在dice[element]
中:
element
不是循环的索引,它是数组中元素的值。
在您的情况下,元素始终是 0
,因为 java 将 0
放入新创建的数组中。
在这种情况下,您应该使用普通的 for 循环:
for (int i = 0; i < dice.length; i++) {
int roll = (int) (Math.random() * 6) + 1;
if (dice[i] == 0) {
dice[i] = roll;
}
}
我目前正在开发一个程序,该程序将掷 5 个骰子并将每个骰子的随机数存储在一个数组中。 我的问题是我的方法只更改第一个元素,而将其余元素保留为 0。 (可以说只掷第一个骰子)
我用 5 个值初始化了一个数组,然后 运行 这个方法将一个数组作为参数,检查元素是否为 0,如果是,它会分配一个 1 到 6 之间的随机值。
我试过做一个增强的 for 循环来查看数组中的每个元素,理论上如果它为零,它会为其分配一个 1 到 6 之间的随机整数。
public static void rollDice(int[] dice) {
for (int element: dice) {
int roll = (int)(Math.random()*6) + 1;
if (element == 0) {
dice[element] = roll;
}
}
我目前的结果是:[随机数, 0, 0, 0, 0] 我的预期结果是:[5 个随机整数]
public static void rollDice(int[] dice) {
for (int i=0;i<dice.length;i++) {
int roll = (int)(Math.random()*6) + 1;
if (dice[i]== 0) {
dice[i] = roll;
}
}
您将索引 0 更改了 5 次,因为您将数组位置 0 的值作为要更改的索引
这种形式的 Java for
循环遍历 values,而不是 indexes,阵列。所有值都是 0
并且您将它们用作索引。因此,您将第一个元素设置了 5 次。
使用传统的 for
循环。
for (int index = 0; index < dice.length; index++) {
// Your roll here
dice[index] = roll;
}
这里
if (element == 0) {
dice[element] = roll;
}
你的代码说如果它是第一个元素,那么存储随机化的结果。由于其他元素不是第一个元素,在其他元素的情况下,条件将为假,因此不会存储卷。如果出现以下情况,请删除此内容:
//if (element == 0) {
dice[element] = roll;
//}
在dice[element]
中:
element
不是循环的索引,它是数组中元素的值。
在您的情况下,元素始终是 0
,因为 java 将 0
放入新创建的数组中。
在这种情况下,您应该使用普通的 for 循环:
for (int i = 0; i < dice.length; i++) {
int roll = (int) (Math.random() * 6) + 1;
if (dice[i] == 0) {
dice[i] = roll;
}
}