显示数组时出现意外输出

时间:2014-02-20 21:51:24

标签: java arrays output bluej

我正在做作业,出现问题,但我无法弄明白它是什么。我们必须生成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 我经历了断点,看看我哪里出错,但我看不出为什么我得到了一堆零。我做错了什么?

2 个答案:

答案 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);

如果您愿意,请将该集合复制到数组中。