删除所有出现的int并返回新数组

时间:2015-03-14 02:21:07

标签: java arrays

我试图在数组中找到所有出现的元素,并返回一个新数组,其中删除了所有数组,并调整了数组的大小差异。例如,我想从数组{1,2,3,4,4,4}中删除所有出现的4,只返回{1,2,3}。

这是我编写的代码

public static int[] removeElement(int[] array, int element) {

    int j = 0;
    int k = 0;

    for (int i =0;i<array.length;i++){
        if (array[i]==element){
            j++;
        }
    }
    int[] newArray = new int[array.length-j];

    for (int i =0;i<array.length-j;i++){
        if(array[i]!=element){
            newArray[k]=array[i];
            k++;
        }
    }
    return newArray;

}

然而,我得到一个非常奇怪的输出

[I@3a0b2771

有人能指出我在哪里出错了吗?

2 个答案:

答案 0 :(得分:1)

您看到的是数组身份而不是其内容。当您尝试打印不覆盖toString()方法的内容时,这是默认输出。来自文档:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@&#39;”以及哈希代码的无符号十六进制表示形式组成。宾语。换句话说,此方法返回一个等于值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

在您的情况下[I表示它是一个int数组。

有几种方法可以按照您的意图打印数组元素:

  • 使用Arrays.toString():打印简单数组时使用此选项。在你的情况下,它将是这样的:

    System.out.println(Arrays.toString(newArray));

  • 使用Arrays.deepToString():打印阵列数组时应使用此功能。

如果您需要使用数组,则应检查Arrays class documentation。它包含许多可能有用的操作数组的方法。

答案 1 :(得分:1)

您正在将代码直接打印到代码中的其他位置。在for循环中打印每个元素,然后迭代整个新数组以查看更改。

for(int i=0;i<newArray.length;i++) { 
    System.out.println(newArray[i]);
}

在数组上使用[i]表示法将访问此索引处保留的元素,在本例中为第i个整数。