数组中的随机数

时间:2014-10-24 08:23:31

标签: java arrays sorting random

我尝试生成一个随机数据的排序列表,没有重复的数据按降序排列。它也会返回重复的数量,但它一直打印出来的东西只有零......任何人都可以帮助我:(

// 2. Ask the user for size of arbitrary numbers.
System.out.print("Please enter a size for arbitray numbers: ");
int size = indata.nextInt(); 
int [] SortedNumbers = new int [size];

// 3. Process arbitrary numbers and remove all duplicates
int numDuplicates = generate_data(SortedNumbers);

// 4. Print the numbers and number of duplicates
printArray(SortedNumbers, numDuplicates);

这是随机方法

public static int generate_data (int [ ] list){
    int duplicates = 0;         
    Random random = new Random();
    System.out.println(n[random.nextInt(n.length)]);
    return duplicates;
}

这是print_array方法

public static void printArray(int [] list, int duplicates) {
// Additional code required
System.out.println("\nSize of array: " + list.length + "  .Numbers of duplicates: " + duplicates); for (int i = 0; i<list.length; i++){
System.out.printf("%7d", list[i]);
if ((i + 1) % 10 == 0){
System.out.println();
}
}
}

2 个答案:

答案 0 :(得分:0)

您的generate_data方法始终返回0,因为本地字段duplicates初始化为0值且从未更改过。

n方法引用的generate_data字段(您尚未发布)可能是int[],但其元素可能尚未初始化(因此如果在数组索引中,打印输出将打印默认值0

因此,您的numDuplicates本地字段也始终为0

备注

  • 您的Random初始化未执行。您应该在班级中初始化static Random对象并重新使用它,而不是每次都使用generate_data方法重新初始化。
  • 您可能希望在字段命名方面查看coding conventions的Java
  • 您可能还希望在printArray方法中发布代码

答案 1 :(得分:0)

random.nextInt(n.length)

为您提供数组的随机索引。 但是打印与此索引对应的值将始终为您提供0。因为你从不在数组中存储任何其他值。

你应该做这样的事情:

    int[] list = new int[10];
    int duplicates = 0;
    Random random = new Random();
    for (int i = 0; i < list.length; i++) {
        int nextVal = random.nextInt(list.length);
        System.out.println("list["+i+"] = "+ nextVal);
        // test duplicates
        for (int index = 0; index < i; index++) {
            if (list[index] == nextVal) {
                duplicates++;
                break;
            }
        }
        list[i] = nextVal;
    }
    return duplicates;