0

重複の可能性:
LinkedList iterator remove

private LinkedList flights;

...

public FlightQueue() {
    super();
    flights = new LinkedList();
}

...

public void clear(){

   ListIterator itr = flights.listIterator();

   while(itr.hasNext()){
        itr.remove();
   }
}

....

Exception in thread "main" java.lang.IllegalStateException
    at java.util.LinkedList$ListItr.remove(Unknown Source)
    at section1.FlightQueue.clear(FlightQueue.java:44)
    at section1.FlightTest001.main(FlightTest001.java:22)

最初の itr.remove() でエラーが表示されます。

4

4 に答える 4

6

イテレータ APIから:
IllegalStateException - 次のメソッドがまだ呼び出されていない場合、または次のメソッドへの最後の呼び出しの後に remove メソッドがすでに呼び出されている場合

iterator. remove( )を呼び出す前に、iterator. next( )を呼び出す必要があります。

    while(itr.hasNext()){
        itr.next(); //This would resolve the exception.
        itr.remove();
    }
于 2012-11-12T14:09:20.477 に答える
0

itr.remove()は、以前にnext()またはprevious()を呼び出した場合にのみ呼び出すことができます。これらのメソッドによって返された要素が削除されるためです。

public void clear(){
    flights.clear();
}
于 2012-11-12T14:11:06.943 に答える
0

LinkedList の clear() メソッドを使用する

于 2012-11-12T14:11:30.387 に答える
0

のJavadocをListIterator見てください。具体的には次のように述べています。

IllegalStateException - neither next nor previous have been called, 
or remove or add have been called after the last call to next or previous.

投稿されたコード フラグメントの.next()前にが必要です。.remove()

乾杯、

于 2012-11-12T14:11:32.807 に答える