簡體   English   中英

數組索引越界java

[英]array index out of bound java

假設numberTracker = {1,15,6,8}numberString = {1,1,5,6,8} numberString每個數字都有自己的圖塊。 我嘗試例如1,5相同的瓷磚顏色集,因為它等於15 numberTrackertileIterator含有相同的長度, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM