我正在尝试编写一个程序,它包括一个长度为50的数组,其中填充有1-999之间的50个随机数。然而,在向数组添加随机数之前,我必须检查该数字是否重复,且该数字是否已存在于数组中。
我似乎已经非常接近正确的输出结果了,但由于某种原因,我的数组中第一个元素总是0,并且它也是唯一重复出现的数字。有人知道这是为什么,并能提供适当的解决方法吗?
一旦发现重复数字,它需要被打印到输出,并替换为新的唯一随机数。
提前感谢。
我似乎已经非常接近正确的输出结果了,但由于某种原因,我的数组中第一个元素总是0,并且它也是唯一重复出现的数字。有人知道这是为什么,并能提供适当的解决方法吗?
一旦发现重复数字,它需要被打印到输出,并替换为新的唯一随机数。
提前感谢。
import java.util.*;
public class Random50 {
public static void main (String[] args)
{
final int MAX_SIZE = 50;
int[] r50 = new int[MAX_SIZE];
boolean duplicates = false;
Random rand = new Random();
for (int i=0; i<r50.length; i++)
{
for (int j=i+1;j<r50.length;j++)
{
r50[i] = rand.nextInt(1000);
if (j!=i && r50[i] == r50[j])
{
duplicates = true;
System.out.println("DUPE: " + r50[i]);
r50[i] = rand.nextInt(1000);
}
}
}
System.out.println(Arrays.toString(r50));
}
}
Collection
对象有一个.contains()
方法。 - Patrick J Abare IISet<Integer>
。然后,您的代码可能会非常简单 - 循环,将值添加到集合中,直到它有50个元素。 - Duncan JonesSet
的建议可能是最好的选择,但在if (j!=i && r50[i] == r50[j])
之后对你的代码进行评论不能保证获得一个不重复的数字。使用while
来解决这个问题。 - Eypros