ArrayGSackIterable <t>类型必须实现继承的抽象方法GSackIterableADT <t> .remove()</t> </t>

时间:2014-06-20 00:58:07

标签: java eclipse iterator iterable

这是我们今天在我们的Java类中运行的示例没有问题,但是当我将文件添加到新项目中时,我遇到以下错误。如果我错误地添加了文件,或者教授使用了稍微不同的文件版本,你能告诉我吗?你能告诉我这个错误的原因是什么以及如何修复它吗?

enter image description here

每个文件的代码如下: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];
    }
}

1 个答案:

答案 0 :(得分:2)

您的代码抱怨来自接口remove的未实现方法GSackIterableADT。 您的教授可能已经完成其中任何一项以使其运行:

  • remove界面
  • 删除了GSackIterableADT方法
  • ArrayGSackIterable标记为抽象类