为什么此方法只向新数组返回值 0?



我应该编写一个简短的程序,它接受10个数字,将值存储在一个数组中,然后将其传递给一个方法(eliminateDuplicates()(,该方法创建一个仅包含第一个数组中唯一值的新数组。

但是,我在初始化output数组或使eliminateDuplicates()方法正确返回输出数组时遇到问题。输出数组总是充满 0,我无法弄清楚为什么会失败。

java.util.Arrays.parallelSort(inputNumbers); //sorts the array in ascending order
eliminateDuplicates(inputNumbers); //passes array to eliminateDuplicates method
//display each unique value in output array
System.out.print("The distinct numbers are ");
for(int i = 0; i < outputNumbers.length; i++)
System.out.print(outputNumbers[i] + " ");
}
public static int [] eliminateDuplicates(int[] list) {
int[] outputNumbers = new int [list.length];
int k = 0;
for (int i = 0; i < list.length; i++)
if(i == 0)              //compares each array value against preceding value
outputNumbers[i] = list[i];     //only copies unique values to output array 
else
if(list[i] != list [i-1]) {
outputNumbers[k] = list[i];
k++;
}
return outputNumbers;```

您在eliminateDuplicates有一个本地outputNumbers,您return。我假设你也有一个多余的static outputNumbers.选项 1:消除局部变量,更改

int[] outputNumbers = new int [list.length];

outputNumbers = new int [list.length];

选项 2:将outputNumbers设置为随叫随到(这是我可能会做的,并消除static(......喜欢

int[] outputNumbers = eliminateDuplicates(inputNumbers);

如果您使用选项 2,请不要忘记删除static

您忽略了方法返回的数组。

改变

eliminateDuplicates(inputNumbers);

int[] outputNumbers = eliminateDuplicates(inputNumbers);

附言您的输出数组与输入数组的长度相同。因此,由于您要消除重复项,因此它可能有一些 0 作为其最后一个元素。如果这不是您想要的,则应仅在发现输入数组有多少个唯一编号后创建输出数组。

最新更新