我从这个更大的项目中取出了这段代码,基本上我想在数组中选择一个随机点,并记住它已被选中(通过将其值设置为1)并重复直到整个阵列都被填满。 这段代码有什么问题?为什么不填充每个字段?
Result:[
{
event:[
{
time:2016-01-21T00:12:03Z
source: xyz
}
]
},
{
event:[
{
time:2016-01-20T00:06:12Z,
source: xyz
}
]
},
{
event:[
{
time:2016-01-20T00:06:12Z,
source: abc
}
]
}
]
答案 0 :(得分:1)
在最糟糕的情况下,如果每次选择x = 0,y = 0,您的代码会将操作仅应用于该像素。然后尝试arraysizex * arraysizey次,但由于检查为零而跳过。
尝试
int i = 0;
while(i < arraysizex * arraysizey) {
x = (int) (Math.random() * arraysizex);
y = (int) (Math.random() * arraysizey);
if (array[x][y] == 0) {
array[x][y] = 1;
i++;
//do something
}
}
这可以保证您执行arraysizex * arraysizey
次操作,因为它只在您执行操作时递增