这是一个在我们的Java类中运行的示例,没有任何问题,但是当我将这些文件添加到新项目中时,出现以下错误。你能否告诉我,如果我错误地添加了文件,或者教授是否使用了稍微不同的文件版本?你能告诉我这个错误的原因是什么,以及如何解决这个错误?类型ArrayGSackIterable <T>必须实现继承的抽象方法GSackIterableADT <T> .remove()
用于每个文件的代码是如下:ArrayGSackIterable.java: 进口java.util.Iterator的;
public class ArrayGSackIterable<T> extends ArrayGSack<T> implements GSackIterableADT<T> {
public Iterator<T> iterator() {
return new ArrayGSackIterator<T>(items, numItems);
}
}
和ArrayGSackIterator.java:
import java.util.Iterator;
import java.util.NoSuchElementException;
public class ArrayGSackIterator<E> implements Iterator<E> {
private E[] items;
private int numItems, curr;
public ArrayGSackIterator(E[] gsackitems, int num) {
items = gsackitems;
numItems = num;
}
public boolean hasNext() {
return curr < numItems;
}
public E next() {
if (!hasNext()) throw new NoSuchElementException();
return items[curr++];
}
public void remove() {
}
}
终于为GSackIterableADT.java:
import java.util.Iterator;
import java.util.NoSuchElementException;
public interface GSackIterableADT<T> extends Iterable<T> {
void add(T item);
T remove() throws NoSuchElementException;
boolean isEmpty();
Iterator<T> iterator();
}
更新:显然,我不得不将这两个文件从另一个.zip文件添加。 GSackADT.java:
import java.util.NoSuchElementException;
public interface GSackADT<T> {
void add(T item);
T remove() throws NoSuchElementException;
boolean isEmpty();
}
ArrayGSack.java:
import java.util.NoSuchElementException;
public class ArrayGSack<T> implements GSackADT<T> {
// Internal storage and accounting members
protected T[] items;
protected int numItems;
private static final int INIT_SIZE = 100;
public ArrayGSack() {
items = (T[]) new Object[INIT_SIZE];
numItems = 0;
}
public void add(T item) {
if (numItems == items.length) expandStorage();
items[numItems++] = item;
}
public T remove() throws NoSuchElementException {
if (numItems < 1) throw new NoSuchElementException();
return items[numItems--];
}
public boolean isEmpty() {
return numItems == 0;
}
// Internal method to handle capacity issues
private void expandStorage() {
T[] oldItems = items;
items = (T[]) new Object[2 * items.length];
for (int i = 0; i < oldItems.length; i++)
items[i] = oldItems[i];
}
}
类'ArrayGSackIterable'实现'GSackIterableADT'但不提供所有抽象方法的实现 –
什么是'ArratGSack'? –