构造函数获取Array作为参数;如何使用它

时间:2014-11-28 15:55:00

标签: java arrays constructor

嗨嗨,伙计们,

所以我的问题是我有以下构造函数:

int tuple[];
NaturalNumberTuple nnt;
public NaturalNumberTuple(int[] numbers) {
    int[] tuple = new int[numbers.length];
    for(int i : numbers){
        tuple[i] = numbers[i];
    }
    // TODO implement constructor
   // throw new UnsupportedOperationException("Constructor not yet implemented");
}

现在我正在尝试执行以下任务:

/**
 * Inserts the specified {@code number} at the end of this tuple. If {@code number} is smaller or equal to 0, this
 * method has no effect.
 * 
 * @param number
 *            the number to be inserted
 * @return the tuple resulting from inserting the specified {@code number}. If {@code number} is smaller or equal to
 *         0, this tuple is returned without any modifications.
 */
public NaturalNumberTuple insert(int number) {
    int placeholderTuple[] = new int[tuple.length+1];
    for(int i : tuple){
        placeholderTuple[i] = tuple[i];
        if(number > 0){
            placeholderTuple[placeholderTuple.length-1] = number;
        }
    } 
    return nnt.NaturalNumberTuple(placeholderTuple[]);
}

错误发生在我的最后一行(返回nnt ....) 语法错误,插入“.class”以完成ArgumentList 和 对于NaturalNumberTuple类型

,未定义NaturalNumberTuple(Class)方法

所以我想为什么要实现另一个类呢?我已经有一个叫做NaturalNumberTuple的人,所以我真的不知道为什么会出现这个错误..而且我还有另外一个问题。我正在使用Arrays,你可以看到,如果我(例如)想构建一个新的元组,我正在使用我的构造函数但是我如何将我的数组传递给它? 你可以在最后一行查看我的第一次尝试..

很抱歉,如果这些代码示例格式错误,抱歉我的英文不好

非常感谢

解决:

首先谢谢你们! 我必须做以下事情:(对于可能有类似问题的其他人)

首先在我的构造函数中,我必须替换行

int[] tuple = new int[numbers.length];

tuple = new int[numbers.length];

因为我已经定义了我的数组元组

第二

return nnt.NaturalNumberTuple(placeholderTuple[]);

return new NaturalNumberTuple(placeholderTuple);

3 个答案:

答案 0 :(得分:1)

几个问题:

  • return nnt.NaturalNumberTuple(placeholderTuple[]);更改为return new NaturalNumberTuple(placeholderTuple);

您需要使用new运算符调用constuctor,而不使用" []"

  • 将此行int[] tuple = new int[numbers.length];更改为tuple = new int[numbers.length];

您正在重新定义元组,当您尝试从其他实例方法访问时,将使用空数组离开。

答案 1 :(得分:0)

placeholderTuple被定义为一个数组,因此在将它作为参数传递给方法时不需要添加额外的括号[]

所以,倒数第二行应该是: return new NaturalNumberTuple(placeholderTuple);

答案 2 :(得分:0)

除了大提琴之外,你正在搞乱你的构造者的工作方式。仅当使用" new"。

创建新实例时才会调用构造函数

所以替换那个

return nnt.NaturalNumberTuple(placeholderTuple[]);

return new NaturalNumberTuple(placeholderTuple);