我有这个代码用于在boolean [] []中将随机值设置为true,而不做任何重复:
int a = 0;
int b = 0;
int counter = 0;
for (int i=0; i<=50; i++) {
do {
a = randomizer.nextInt(hoogte);
b = randomizer.nextInt(breedte);
/**debug variable*/
counter++;
} while (bommaker[a][b]);
bommaker[a][b] = true;
}
经过一段时间的测试后,我注意到出了问题,所以我添加了一个计数器来检查它。每次我运行程序时,都会出现一个与“计数器”不同的数字。有一次它是57而另一次是63.但是我已经将循环设置为51.这意味着代码不能正常工作。有人可以解释为什么它产生超过51个数字,并给出一个可能的解决方案吗?
答案 0 :(得分:4)
你必须记住你在循环中有一个循环。 OUTTER循环限制为51次执行,但内部循环将导致随机的迭代次数(每次看到数组已设置为true时进行额外迭代)。
除了计数器值大于您的预期之外,代码还没有用?
答案 1 :(得分:0)
从do while循环移出计数器++行
int a = 0;
int b = 0;
int counter = 0;
for (int i=0; i<=50; i++) {
do {
a = randomizer.nextInt(hoogte);
b = randomizer.nextInt(breedte);
/**debug variable*/
} while (bommaker[a][b]);
counter++;
bommaker[a][b] = true;
}