当我创建一个 Example
物体,我称之为 initializeArray();
我使用一个简单的嵌套for循环遍历数组,然后使用 exampleArr[i][j] = new Example(false, false, false, 0);
然而,打这个电话给我一个 java.lang.ArrayIndexOutofBoundsException:0
在上面的一行。
我假设我不正确地示例化了新对象,因为这也发生在另一个应该显示所有 Example
数组中的对象。但是,我将发布我正在使用的嵌套循环,以防有我做错的事情我看不到。
public void initializeArray(){
for(int i = 0; i < getRows(); i++){
for(int j = 0; j < getColumns(); j++){
tileArr[i][j] = new Tile(false, false, false, 0);
}
}
}
//行和列的声明
private int rows;
private int columns;
Tile[][] tileArr = new Tile[rows][columns];
public void setRows(int r)
{
rows = r;
}
public void setColumns(int c)
{
//various setters and getters for the array
columns = c;
}
public int getRows()
{
System.out.print(rows);
return rows;
}
public int getColumns()
{
System.out.print(columns);
return columns;
}
谢谢大家的帮助!问题已经解决了。
2条答案
按热度按时间noj0wjuj1#
申报您的
tileArr
但不初始化。然后在启动之前初始化数组
for
循环中的initializeArray()
(这是假设你rows
以及columns
已设置。您也可以添加逻辑来检查这一点)。kcrjzv8t2#
正如@gonzo所说的,您必须初始化您的数组,以便为您将要使用的所有位置分配足够的内存。
但有时你不知道这个阵列有多大。对于那些情况,你应该使用
List<Tile>
类型likeLinkedList<Tile>
或者ArrayList<Tile>
这样你就不需要为每个新职位分配空间。