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())' –