【发布时间】:2022-01-05 10:10:39
【问题描述】:
我正在尝试创建一种方法,该方法用没有重复元素的随机整数填充数组。我无法确保放入新数组的每个元素都是不同的。
例如。如果 numOfDigits 是 5,那么我想要 [3][8][2][6][1] 之类的东西。目前它要么输出类似 [9][0][1][0][0] 的东西,要么无限循环。
private static int[] hiddenSet(int numOfDigits){
int[] numArray = new int[numOfDigits];
int temp;
for (int i = 0; i < numArray.length; i++){
do {
temp = getRandomNum(10);
numArray[i] = temp;
} while (isDigitNew(numArray, temp));
//Each random num must be unique to the array
}
return numArray;
}
private static boolean isDigitNew(int[] numArray, int index){
for (int i = 0; i < numArray.length; i++) {
if (numArray[i] == index) {
return false;
}
}
return true;
}
【问题讨论】:
-
您可以使用调试器单步执行您的程序以查看发生了什么。你确定你发布的代码已经完成了吗?
-
一行实现。
return IntStream.generate(() -> ThreadLocalRandom.current().nextInt(numOfDigits)).distinct().limit(numOfDigits).toArray();
标签: java arrays for-loop methods boolean