2012-04-10 42 views
1

使用迭代進行處理時,會在哪種情況下拋出IllegalStateException?我工作的分配和它的選擇題:IllegalStateException會拋出哪個條件?

一)致電remove調用next
B)調用previous
℃之後調用next)調用remove
d後調用remove)調用後調用removeprevious

我在「API文檔」中發現的是,如果next方法尚未調用,或者remove方法已被調用在最後一次調用next方法後。

所以答案必須是「a」,但我被告知這是錯誤的。爲什麼我的推理錯誤,什麼是正確的答案?

+2

omg! :) C似乎比指示更多。 :)但是,下次,你介意給一些背景嗎? – Snicolas 2012-04-10 20:50:20

+0

@Snicolas我知道,對吧?這有點令人不安之後,這種消除。 「IllegalStateException表示方法已在非法或不適當的時間被調用。」 – 2012-04-10 20:52:45

+0

好的下次我會試着給你一些背景。抱歉!不管怎麼說,還是要謝謝你 – 2012-04-10 20:53:09

回答

2

您有一個清單[a, b, c, d, e]。一個指針N開始指向什麼都沒有。這是Java中迭代器的標準起始位置。

情景A) - 致電next,N現在指向a。撥打remove,a已經不存在了,列表是[b, c, d, e],N指向什麼也沒有。

情景B)致電previous,N現在指向e。致電next,N現在指向a

情景C)呼叫next,N指向a。打電話remove,a不見了,N指着什麼都沒有。致電remove, IllegalStateException is thrown. N`沒有指向任何東西,所以什麼也不能刪除。

情景D)致電previous,N指向e。撥打remove,e不見了,N指向不了。

情景E)致電remove,N沒有指向任何東西,因此拋出了IllegalStateException

相關問題