我打算用最简单的java(数组和循环)生成无重复的随机数...但是输出结果是10个重复的数字,我无法弄清楚为什么.
这是我的代码:
int[] number = new int[10];
int count = 0;
int num;
while (count < number.length) {
num = r.nextInt(21);
boolean repeat = false;
do {
for (int i=0; i<number.length; i++) {
if (num == number[i]) {
repeat = true;
} else if (num != number[i] && i == count) {
number[count] = num;
count++;
repeat = true;
}
}
} while (!repeat);
}
for (int j = 0; j < number.length; j++) {
System.out.print(number[j] + " ");
}
Run Code Online (Sandbox Code Playgroud)
你怎么用Set?如果您还想跟踪插入顺序,可以使用LinkedHashSet.
Random r = new Random();
Set<Integer> uniqueNumbers = new HashSet<>();
while (uniqueNumbers.size()<10){
uniqueNumbers.add(r.nextInt(21));
}
for (Integer i : uniqueNumbers){
System.out.print(i+" ");
}
Run Code Online (Sandbox Code Playgroud)
一个Set在Java中就像是一个Array或ArrayList只是它处理重复你.Integer如果集合中尚不存在,它将仅添加到集合中.该类Set具有与Array您可以使用的方法类似的方法.例如Set.size(),相当于Array.length和Set.add(Integer)半等价Array[index] = value.集合不跟踪插入顺序,因此它们没有索引.一旦你了解它,它就是Java中非常强大的工具.;)
希望这可以帮助!