2014-02-09 67 views
-1

我試圖通過一個接口實現next()方法,但是它給了我一個錯誤。以下是我有:不能通過迭代器實現next()方法

private class MyIterator implements Iterator<Term> 
{ 

    private final Polynomial myArray; 
    private int current; 

    MyIterator(Polynomial myArray) { 
     this.myArray = myArray; 
     this.current = myArray.degree; 
    } 

    @Override 
    public boolean hasNext() { 
     return current < myArray.degree; 
    } 


    @Override 
    public Integer next() { //this method right here does not work 
     if (! hasNext()) throw new UnsupportedOperationException();; 
     return myArray.coeff[current++]; 
    } 

    @Override 
    public void remove() { 
     throw new UnsupportedOperationException(); 
    } 
} 

的next()方法則拋出我這個錯誤:

error

這是我的接口:

public interface Term { 

int coeff(); 
int exp(); 
String toString(); 
} 

所以我的問題是爲什麼界面不允許MyIterator執行下一個()方法

+0

好的,閱讀並理解錯誤信息可以解釋問題。但降低投票?你有多少次沒有看過你的日誌文件? – Hannes

回答

5

您的班級正在實施Iterator<Term>,因此next()必須返回Term,而不是Integer

編輯:此行

if (! hasNext()) throw new UnsupportedOperationException();; 

是錯誤的。如果Iterator沒有更多項目,next()必須拋出NoSuchElementException

+0

謝謝,我相信我必須讓它實現整數而不是Term – user1404664

1

Iterator<Term>承諾您的迭代器將返回類型爲Term的引用,但您的next()方法嘗試返回Integer

其中一件事需要改變,以與另一件一致。