1 回答
TA贡献1799条经验 获得超6个赞
您忘记包含“add(T toAdd)”和“remove(T toRemove)”方法,当我尝试让测试通过时,这是绝大多数失败的根源。(注意:失败的痕迹会有所帮助,因为您的添加和删除需要非常复杂才能适应您似乎想要的设计)
无论如何,继续修复我所看到的内容。
在第二个构造函数中,您实际上从未分配所接收的数据。您调用this.array = (T[]) new Comparable[0];它会创建一个类型为 的空数组Comparable。事实上,您需要打电话this.array = data才能保留给您的东西。
另一件事,在您的size()方法中,您忘记在 后放置分号this.size。这往往会阻止事情过去。
最后,final private T[] array不能有final,否则你将永远无法添加或删除元素。
作为奖励,以下是我用来满足要求并使测试通过的方法(带注释!!!)add():remove()
public void add(T t) {
if (!(size >= capacity)) { //If there's room...
if (size == 0) //If the array is empty...
array[0] = t; //Add to first index
else
array[size] = t; //Add to next available index
size++;
}
}
public void remove(T element) {
if (size <= 0) //If the array is empty...
return; //Stop here
else {
for (int i = 0; i <= this.size(); i++) { //Linear search front-to-back
if (array[i].equals(element)) { //Find first match
array[i] = null; //Delete it
size--;
if (i != size) { //If the match was not at the end of the array...
for (int j = i; j <= (this.size() - 1); j++)
array[j] = array[j + 1]; //Move everything after the match to the left
}
return; //Stop here
}
}
}
}
附带说明一下,创建SortedArray对象的调用确实应该参数化(使用 <> 例如SortedArray<Integer> arr = new SortedArray<Integer>(5, data);)。
添加回答
举报