我尝试生成一个随机数据的排序列表,没有重复的数据按降序排列。它也会返回重复的数量,但它一直打印出来的东西只有零......任何人都可以帮助我:(
// 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();
}
}
}
答案 0 :(得分:0)
您的generate_data
方法始终返回0
,因为本地字段duplicates
初始化为0
值且从未更改过。
n
方法引用的generate_data
字段(您尚未发布)可能是int[]
,但其元素可能尚未初始化(因此如果在数组索引中,打印输出将打印默认值0
。
因此,您的numDuplicates
本地字段也始终为0
。
备注强>
Random
初始化未执行。您应该在班级中初始化static Random
对象并重新使用它,而不是每次都使用generate_data
方法重新初始化。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;