嗨嗨,伙计们,
所以我的问题是我有以下构造函数:
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);
答案 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);