这是我们今天在我们的Java类中运行的示例没有问题,但是当我将文件添加到新项目中时,我遇到以下错误。如果我错误地添加了文件,或者教授使用了稍微不同的文件版本,你能告诉我吗?你能告诉我这个错误的原因是什么以及如何修复它吗?
每个文件的代码如下:ArrayGSackIterable.java: import 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];
}
}
答案 0 :(得分:2)
您的代码抱怨来自接口remove
的未实现方法GSackIterableADT
。
您的教授可能已经完成其中任何一项以使其运行:
remove
界面GSackIterableADT
方法
ArrayGSackIterable
标记为抽象类