Arc*_*ian 2 java arrays random duplicate-removal
我有一个用 6 个随机生成的数字填充的数组。首先,它生成一个 1 到 49 之间的随机数,然后根据数组中的数字进行检查。如果发现重复,它应该再次生成一个随机数,然后再次执行检查。如果没有重复,则将数字添加到数组中。
这是代码:
public void populateArray()
{
for(int i = 0; i < numberLine.length; i++)
{
randomNumber = 1 + randomGen.nextInt(49);
for(int j = 0; j < i; j++)
{
if (numberLine[j] == randomNumber)
{
i--;
}
else
{
continue;
}
}
if(i >= 0)
{
numberLine[i] = randomNumber;
}
else
{
continue;
}
}
Arrays.sort(numberLine);
}
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,这仍然允许重复,尽管很少(大约 50 个数组中的 1 个),例如6 6 16 24 34 46. 但是当我尝试通过取出随机数元素并使用像 30 这样的数字来复制它时,我无法重现结果。怎么了?
使用集合会容易得多,例如 aTreeSet既已排序又没有重复
Set<Integer> set = new TreeSet<Integer>();
while (set.length() < 6) {
set.add(randomGen.nextInt(49));
}
Run Code Online (Sandbox Code Playgroud)
toArray()如果您真的想要一个数组,请在此之后使用。