在JAVA中尝试合并两个数组时获取额外数字

在JAVA中尝试合并两个数组时获取额外数字,java,Java,在一个任务中,我需要合并两个整数数组,但由于某种原因,我得到了错误的输出 这是类集合的属性: private int []set; private int counter; private int max = 10; 这是我用来获取numbers的构造函数,我需要使用varags,因为我需要能够更改集合中元素的数量: public Set (int...numbers) { set = new int[max]; counter = 0;

在一个任务中,我需要合并两个整数数组,但由于某种原因,我得到了错误的输出

这是类集合的属性:

private int []set; 
private int counter;
private int max = 10;
这是我用来获取numbers的构造函数,我需要使用varags,因为我需要能够更改集合中元素的数量:

public Set (int...numbers) {

        set = new int[max];
        counter = 0;

        for (int i = 0; i < numbers.length; i++) {

            if (!this.isMember(numbers[i])) { 
                this.set[this.counter] = numbers[i];
                this.counter++;
            }
        }
    }

但我得到的输出是1,2,3,4,5,0,6,7,8,9,I需要相同的一个,但中间没有0…

请帮忙
谢谢

问题似乎是union方法中的这一行:

public Set union (Set setToUnion) {

    Set setToReturn;

    if (this.equals(setToUnion)){
        setToReturn = new Set(setToUnion);
        return setToReturn;
    }

    setToReturn = new Set(this.set);

    for (int i = 0; i < setToUnion.counter; i++) {

        if (!setToReturn.isMember(setToUnion.set[i])) {
            setToReturn.set[setToReturn.counter ] = setToUnion.set[i];
            setToReturn.counter++;
        }
    }
    return setToReturn;
}
setToReturn = new Set(this.set);
可能是:

setToReturn = new Set(this);
为什么会产生问题? 此时,this.set等于[1,2,3,4,5,0,0,0,0,0],这是一个整数数组。因此,将调用以下构造函数:

public Set (int...numbers) { ... }
这意味着数组中的所有数字都将被相加,包括零。或者您需要通过执行以下操作来截断数组中的零:

setToReturn = new Set( Arrays.copyOf( set, counter ) );

或者有一个接受集合的构造函数。这样,您就可以访问计数器,查看数组中有多少数字实际上是集合的一部分。我猜您已经有了该构造函数,基于调用该构造函数的代码的另一部分。

问题似乎是union方法中的这一行:

public Set union (Set setToUnion) {

    Set setToReturn;

    if (this.equals(setToUnion)){
        setToReturn = new Set(setToUnion);
        return setToReturn;
    }

    setToReturn = new Set(this.set);

    for (int i = 0; i < setToUnion.counter; i++) {

        if (!setToReturn.isMember(setToUnion.set[i])) {
            setToReturn.set[setToReturn.counter ] = setToUnion.set[i];
            setToReturn.counter++;
        }
    }
    return setToReturn;
}
setToReturn = new Set(this.set);
可能是:

setToReturn = new Set(this);
为什么会产生问题? 此时,this.set等于[1,2,3,4,5,0,0,0,0,0],这是一个整数数组。因此,将调用以下构造函数:

public Set (int...numbers) { ... }
这意味着数组中的所有数字都将被相加,包括零。或者您需要通过执行以下操作来截断数组中的零:

setToReturn = new Set( Arrays.copyOf( set, counter ) );

或者有一个接受集合的构造函数。这样,您就可以访问计数器,查看数组中有多少数字实际上是集合的一部分。我猜你已经有了这个构造函数,基于调用这种构造函数的代码的另一部分。

union方法在哪里?抱歉刚才切掉了它:/I我的问题是union@oogaSo问题的标题错了?是的,我也更改了它,抱歉那些家伙@davidwallace你确定你没有遗漏一些{}代码中的字符?特别是,union中第二个if块周围的那些?union方法在哪里?抱歉刚才切掉了它:/我的问题是union@oogaSo的问题标题是错误的?是的,我也更改了它,为那些家伙@davidwallacea抱歉你确定你的代码中没有缺少一些{}字符吗?特别是,第二个if块周围的块在并集内?