我应该编写一个简短的程序,它接受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 作为其最后一个元素。如果这不是您想要的,则应仅在发现输入数组有多少个唯一编号后创建输出数组。