通过删除某些对象压缩java中的数组

通过删除某些对象压缩java中的数组,java,arrays,null,Java,Arrays,Null,在我的计算机科学课上,我们应该取一个对象数组{A,C,D,C,C,F,C,G},并将某个对象的所有元素设置为null。对象是C:{A,null,D,null,null,F,null,G} 然后我们应该将所有剩余的对象移动到数组{A,D,F,G,null,null,null,null}的前面。。。 到目前为止,我尝试了这个方法,但我找不到我的方法的问题: public static void compact (Object[] vec, Object item) { int a=

在我的计算机科学课上,我们应该取一个对象数组{A,C,D,C,C,F,C,G},并将某个对象的所有元素设置为null。对象是C:{A,null,D,null,null,F,null,G} 然后我们应该将所有剩余的对象移动到数组{A,D,F,G,null,null,null,null}的前面。。。 到目前为止,我尝试了这个方法,但我找不到我的方法的问题:

public  static  void  compact  (Object[] vec, Object item) {

    int a=0;
    for(int i=0; i < vec.length; i++)
    {
        if(vec[i]==item)
        {
            vec[i] = null;
        }
        else
        {
            vec[i]=vec[a];
            a++;
        }
    }
    for(int  b=a; b < vec.length-(a-1); b++)
    {
        vec[b]=null;
    }
}
publicstaticvoidcompact(Object[]vec,objectitem){
int a=0;
对于(int i=0;i
请帮忙

if(vec[i]==item)
切勿使用
==
来比较对象,请使用
equals()
(并且,在定义新类时,请注意以实用的方式实现
equals()
hashCode()

当然,可能还有其他问题,但既然你连失败的原因都不说,我就不在乎了

切勿使用
==
来比较对象,请使用
equals()
(并且,在定义新类时,请注意以实用的方式实现
equals()
hashCode()


当然,可能还有其他问题,但由于您甚至没有告诉我失败的原因,所以我不会太在意。

我认为您需要的是等于()而不是==除非测试为null。您正在使用一个对象。

我认为您需要的是等于()而不是==除非测试为null。您正在使用对象。

有什么问题?到目前为止,您做了哪些调试?我想您想要的是
vec[a]=vec[I]
,而不是相反。您的a的名称非常糟糕。给它起个好名字,你就会明白为什么它失败了。问题是什么?到目前为止,您做了哪些调试?我想您想要的是
vec[a]=vec[I]
,而不是相反。您的a的名称非常糟糕。给它起个好名字,你就会明白为什么它失败了。