首页 > 解决方案 > 为什么此方法只将 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;```

标签: javaarrays

解决方案


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

改变

eliminateDuplicates(inputNumbers);

int[] outputNumbers = eliminateDuplicates(inputNumbers);

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


推荐阅读