[英]array index out of bound java
假設numberTracker = {1,15,6,8}
和numberString = {1,1,5,6,8}
。 numberString
每個數字都有自己的圖塊。 我嘗試例如1,5相同的瓷磚顏色集,因為它等於15 numberTracker
而tileIterator
含有相同的長度, numberString
.The代碼工作完美,做什么是suppost做。 但是我得到java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
ListIterator < String > nmbTracker = numberTracker.listIterator();
ListIterator < Tile > tileIterator = tiles.listIterator();
Tile t;
int x = 0;
int y = 0;
while (nmbTracker.hasNext()) {
if (numberTracker.get(x).equals(numberString.get(y))) {
t = tileIterator.next();
t.setColor(tilePanel2.changeColour());
if (numberTracker.size() - 1 != x) {
x++;
}
if (numberString.size() - 1 != y) {
y++;
}
} else {
x++;
t = tileIterator.next();
t.setColor(tilePanel2.changeColour());
Color color = t.getColor();
t = tileIterator.next();
t.setColor(color);
y++;
y++;
}
repaint();
}
好。 當您嘗試訪問包含 4 個元素的列表中的索引 5 時,就會發生這種情況。 您正在使用迭代器的hasNext()
來查看是否有任何可用的next
值,但您切換到使用get(x)
來訪問列表值。 選一個。
如果你想堅持get(x)
,去掉hasNext()
並用while(x<4 && y<5)
替換它,這樣列表訪問就不會越界。
如果你想要iterator
,而不是使用get(x)
,使用迭代器的next()
方法。
至少在這種情況下,交替使用兩者並不好。
我認為這是吸煙槍:
y++;
y++;
下一次,你會比你正在檢查的名單多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.