【发布时间】:2015-09-17 22:21:30
【问题描述】:
我正在生成一个 1-54 范围内的 6 个整数数组(类似于乐透号码)。但是,当尝试检测重复项时,我的代码没有执行。如果我的条件逻辑会捕获重复项,我尝试通过简单地打印“WE HAVE FOUND A DUPLICATE”来进行调试。当然,它不会打印所需的输出:
18-33-39-41-41-45
我想检测重复项,以便生成另一个不等于发现的重复项的随机数。我不想仅仅为了获得另一个数字而增加/减少副本的值,我想实际生成另一个不等于副本的 1&54 之间的值。
这是我的代码:
public class Main {
public static void main(String[] args) {
Random rand = new Random();
int[] luckyArray = new int[6];
//build array
for (int i = 0; i < luckyArray.length; i++) {
int luckyNumber = rand.nextInt(54) + 1;
luckyArray[i] = luckyNumber;
}
//detect duplicates in the array
for (int i = 0; i < luckyArray.length; i++) {
if (i > 0 && luckyArray[i] == luckyArray[i - 1]) {
System.out.print("WE HAVE FOUND A DUPLICATE!");
/* while (luckyArray[i - 1] == luckyArray[i]) {
luckyArray[i] = rand.nextInt(54) + 1;
}*/
}
}
//sort the array before printing
Arrays.sort(luckyArray);
for (int t = 0; t < luckyArray.length; t++) {
if (t != 5) {
System.out.print(luckyArray[t] + "-");
} else System.out.print(luckyArray[t]);
}
}
}
我希望将当前索引 [i] 与其之前的 [i-1] 进行比较,如果/当它们相等时,为当前索引生成一个新值。
提前致谢!
【问题讨论】:
-
这不是一个好策略。阅读stackoverflow.com/questions/8115722/…