이것은 오늘 Java 클래스에서 아무런 문제없이 실행되는 예제이지만 새 프로젝트에 파일을 추가 할 때 다음 오류가 발생합니다. 파일을 잘못 추가했거나 교수가 약간 다른 버전의 파일을 사용하고 있었는지 알려주실 수 있습니까? 이 오류의 원인과 해결 방법을 알려주십시오. ArrayGSackIterable.java :유형 ArrayGSackIterable <T>은 상속 된 추상 메소드 GSackIterableADT <T> .remove()를 구현해야합니다.
파일 각각에 대한 코드는 다음과 같습니다 수입 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에 대한
: GSackIterableADT.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() {
}
}
마지막 :
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();
}
UPDATE : 분명히 나는 다른 .zip 파일에서이 두 파일을 추가했다. GSackADT.java :
import java.util.NoSuchElementException;
public interface GSackADT<T> {
void add(T item);
T remove() throws NoSuchElementException;
boolean isEmpty();
}
ArrayGSack.java : 귀하의 코드는 인터페이스 GSackIterableADT
에서 구현되지 않은 방법 remove
에 대한 불평
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 '이란 무엇입니까? –