我正在做作业,出现问题,但我无法弄明白它是什么。我们必须生成1到25之间的随机数并将其添加到数组中。将随机数添加到数组时,我们必须确保它不在数组中,如果是,我们必须生成另一个随机数。这是我的代码: //变量 随机rnd = new Random(); int rndNum; int numbers [] = new int [20];
//adds random number to array
for (int index = 0; index < numbers.length; index++)
{
rndNum = rnd.nextInt(25) + 1; //generates random number
boolean same;
if (Arrays.binarySearch(numbers, rndNum) >= 0) //checks for number already in array
same = true;
else
same = false;
//gets another random number if needed
while (same == true)
{
rndNum = rnd.nextInt(25) + 1;
same = Arrays.asList(numbers).contains(rndNum);
}
numbers[index] = rndNum; //adds random number to array
Arrays.sort(numbers); //sorts array for checking purposes
}
//displays array
for (int index = 0; index < numbers.length; index++)
{
//prints numbers in table format
if (index == 4 || index == 9 || index == 14 || index == 19)
System.out.println(numbers[index]);
else
System.out.print(numbers[index] + "\t");
}
这是我的输出: 0 0 0 0 0 0 0 0 0 0 2 3 4 5 8 12 17 18 19 20 我经历了断点,看看我哪里出错,但我看不出为什么我得到了一堆零。我做错了什么?
答案 0 :(得分:0)
错误可能如下:
你这样做:
for (int index = 0; index < numbers.length; index++)
{
// some computation
numbers[index] = rndNum; //adds random number to array
Arrays.sort(numbers); //sorts array for checking purposes
}
输入新数字,然后对数组进行排序。但是在排序之后,在你刚刚添加非零数字的条目处可能有零(因为数组是用零初始化的)。
尝试在迭代时对数组进行排序。
答案 1 :(得分:0)
如果您需要一组随机值,为什么不让标准设置来完成所有工作呢?
java.util.Random rnd = new java.util.Random();
java.util.Set<Integer> values = new java.util.LinkedHashSet<>();
while (values.size() < 20) {
values.add(rnd.nextInt(25) + 1);
}
System.out.println(values);
如果您愿意,请将该集合复制到数组中。