我目前正在开发一个程序,该程序将掷出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个随机整数]
答案 0 :(得分:2)
这种Java for
循环形式遍历数组的值,而不是索引。所有的值都是0
,您正在将它们用作索引。因此,您将第一个元素设置了5次。
使用传统的for
循环。
for (int index = 0; index < dice.length; index++) {
// Your roll here
dice[index] = roll;
}
答案 1 :(得分:1)
这里
if (element == 0) {
dice[element] = roll;
}
您的代码说,如果它是第一个元素,则存储随机化的结果。由于其他元素不是第一个元素,因此在其他元素的情况下,条件将为假,因此不会存储该卷。如果出现以下情况,则将其删除:
//if (element == 0) {
dice[element] = roll;
//}
答案 2 :(得分:0)
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的值作为要更改的索引
答案 3 :(得分:0)
在325.0
中:
414.0
不是循环的索引,它是数组中元素的值。
在您的情况下,元素始终为dice[element]
,因为Java将element
放入新创建的数组中。
在这种情况下,您应该使用普通的for循环:
0