do{
System.out.println("inside do");
for (int i = 0; i < i2; i++) {
String s2 = m_area.m_items.get(i).returnName();
if (s2.contains(s)) {
itemexist_check = true;
player.addItem(m_area.m_items.get(i));
m_area.m_items.remove(i);
} else {
//do nothing
}
}
itemexist_check = true;
}while(itemexist_check == false);
當該做的語句運行,它會很樂意進行 「player.addItem(m_area.m_items.get(I))」,但是當它到達「m_area.m_items.remove(我)「(m_items是一個LinkedList),它會拋出一個」OutOfBoundsException:Index 1,Size 1「。通過打印LinkedList的大小以及打印「i」的值,我已經確定在「m_area.m_items.remove(i)」之前,LinkedList的大小是2,並且「我「是0.我明白爲什麼會拋出異常。 LinkedList中顯然沒有元素0。我不知道的是,爲什麼它沒有在「player.addItem(m_area.m_items.get(i))」上拋出異常呢?有些事情不對,請幫忙。的Java:奇怪OutOfBoundsException
謝謝
哦。顯然LinkedList.get只在索引小於0時拋出異常,而LinkedList.remove在索引等於0時拋出異常。我想我真正的問題是,我該如何修復我的代碼? – Blackvein
你的問題不清楚。例如。 'i2'指的是什麼? –
不正確。 [LinkedList.get](http://download.oracle.com/javase/7/docs/api/java/util/LinkedList.html#get%28int%29)會拋出'IndexOutOfBoundsException' - 如果索引超出範圍'(index <0 || index> = size())' –