为什么抛出越界错误?

时间:2014-11-28 18:04:22

标签: java arrays arraylist indexoutofboundsexception

我有以下代码,通过大小为8的ArrayList

public Tile[] getTiles(){

    Tile[] tiles = {};

    for(int i = 0; i < board.size(); i++){

        try {
            tiles[i] = board.get(i);
        } catch(ArrayIndexOutOfBoundsException e){

            System.out.println(i + " is out of bounds");
        }

    }

    return tiles;
}

然而它输出

 0 is out of bounds
 1 is out of bounds
 2 is out of bounds
 3 is out of bounds
 4 is out of bounds
 5 is out of bounds
 6 is out of bounds
 7 is out of bounds
 8 is out of bounds

为什么ArrayList中的所有元素都超出范围?

2 个答案:

答案 0 :(得分:1)

tiles被初始化为一个空数组(0长度)。那是你的问题。 它会使tiles[i]超出任何i范围。

您应该以这种方式初始化tiles,使其长度与board的大小相同:

Tile[] tiles = new Tile[board.size()];

答案 1 :(得分:0)

这是由于空数组。

Tile[] tiles = {};

并且您尝试使用索引值访问空数组,例如1,2 .....等这就是为什么它显示出来的结果。