[英]How to generate array of unique values
我正在尝试生成一个唯一值数组,但我的第一个数字始终为 0,我该如何解决这个问题?
Random r = new Random();
Scanner in = new Scanner(System.in);
int generatedNumbers = 0;
int winningSum = 0;
int[] list = new int[10];
for (int number = 1; number < list.length; ++number) {
list[number] = r.nextInt(99);
for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {
if (list[uniqueNumber] == list[number]) {
list[number] = r.nextInt(99);
uniqueNumber = 0;
}
}
}
int random_first = r.nextInt(99);)
for (int element : list) {
System.out.println(element);
}
你需要在你的 for 循环中从零开始,而不是从一开始
Random r = new Random();
int generatedNumbers = 0;
int winningSum = 0;
int[] list = new int[10];
for(int index = 0; index < list.length; index++) {
list[index] = r.nextInt(99);
for(int uniqueNumber = 0; uniqueNumber < index; ++uniqueNumber ) {
if( list[uniqueNumber] == list[index] ) {
list[index] = r.nextInt(99);
uniqueNumber = 0;
}
}
}
int random_first = r.nextInt(99);
for (int element: list) {
System.out.println(element);
}
在你的方法中,你有三个错误(我注意到了)。
首先,这个循环for (int number = 1; number < list.length; ++number)
应该从零开始。 因此, for (int number = 0; number < list.length; ++number)
。
第二,内部检查for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {
在这里失败uniqueNumber = 0;
它应该是uniqueNumber = -1
。
最后,在外部 for 循环之后,您不需要这一行int random_first = r.nextInt(99);)
。
奖金。 为了更容易调试,您可以使用一个技巧。 用 10 替换 99。为什么? 生成列表时,其中的所有值都应该是唯一的。
Random r = new Random();
int[] list = new int[10];
int bound = 10;
for (int number = 0; number < list.length; ++number) {
list[number] = r.nextInt(bound);
for (int uniqueNumber = 0; uniqueNumber < number; ++uniqueNumber) {
if (list[uniqueNumber] == list[number]) {
list[number] = r.nextInt(bound);
uniqueNumber = -1;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.