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

Java 为什么此方法只向新数组返回0的值?,java,arrays,Java,Arrays,我应该编写一个简短的程序,它接受10个数字,将值存储在一个数组中,并将其传递给一个方法(EliminatedReplicates()),该方法只从第一个数组中创建一个新的数组 但是,我在初始化输出数组或使EliminatedReplicates()方法正确返回输出数组时遇到问题。输出数组总是充满了0,我不明白为什么会失败 java.util.Arrays.parallelSort(inputNumbers); //sorts the array in ascending orde

我应该编写一个简短的程序,它接受10个数字,将值存储在一个数组中,并将其传递给一个方法(
EliminatedReplicates()
),该方法只从第一个数组中创建一个新的数组

但是,我在初始化
输出
数组或使
EliminatedReplicates()
方法正确返回输出数组时遇到问题。输出数组总是充满了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;```
java.util.Arrays.parallelSort(InputNumber)//按升序对数组排序
删除副本(输入编号)//将数组传递给EliminatedReplicates方法
//显示输出数组中的每个唯一值
系统输出打印(“不同的数字是”);
对于(int i=0;i
您正在忽略方法返回的数组

改变

eliminateDuplicates(inputNumbers);

另外,输出数组的长度与输入数组的长度相同。因此,由于要消除重复项,它的最后一个元素可能有一些0。如果这不是您想要的,您应该在找到输入数组中有多少唯一的数字后才创建输出数组。

您在
EliminatedReplicates
,您将
返回它
。我假设您也有一个冗余的
静态OutputNumber
。选项1:消除局部变量,更改

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

选项2:设置呼叫时的
outputNumber
(这是我可能会做的,并消除
static
one)


如果使用选项2,请不要忘记删除
静态
变量。

您的问题中是否有忘记包含的静态
outputNumbers
变量?
int[] outputNumbers = new int [list.length];
outputNumbers = new int [list.length];
int[] outputNumbers = eliminateDuplicates(inputNumbers);