目前,我创建了一个二维数组来表示迷宫的网格。我的迷宫构造函数如下:
public Maze(int rows, int columns)
{
this.rows = rows;
this.cols = columns;
curr = new Square[rows][columns];
}
在我的测试类中包含以下内容:
Maze m = new Maze(4, 4);
但是,当我遍历迷宫时,在调试时我注意到 curr 被初始化为 Square[4][] ,没有列的参数。有谁知道这里可能出现什么问题吗?
编辑:这就是我打算做的;我使 curr = Square[rows][columns] 但当我在以下循环中检查 curr 的值时,在调试器工具中,每当 curr 进入 curr[i][j 时,其值 Square[4][] ] 在循环中。
for(int i = 0; i < maze.length; i++)
{
for(int j = 0; j < maze[i].length; j++)
{
/* Entrance */
if(maze[i][j] == start)
{
startX = j;
startY = i;
curr[i][j] = new Square(i, j, start, this);
}
/* Exit */
else if(maze[i][j] == end)
{
endX = j;
endY = i;
curr[i][j] = new Square(i, j, end, this);
}
/* Traversable Squares */
else if(maze[i][j] == traverse)
{
curr[i][j] = new Square(i, j, traverse, this);
}
/* Non-traversable Squares */
else
{
curr[i][j] = new Square(i, j, noTraverse, this);
}
}
}
最佳答案
Java 使用“不规则数组”来表示它的多维数组。换句话说,即使您指定一个矩形数组 - 所有行都具有相同长度的数组,java 也允许行具有不同长度的可能性。
结果,curr = new Square[r][c] 创建了 r+1 个对象:
1 个长度为 r 的数组,其中每个元素都是 Squares 数组 (Square[])
和
r 个正方形数组,每个长度为 c(尽管 c 可以针对其中任何一个进行更改)
所以 curr
实际上是一个 Square[r][]
:它是一个可变长度方阵的 r 元素数组,每个方阵恰好长度为 c 个元素。
curr[n]
应该是 Square[]
,而 curr[n][m]
是 Square
关于java - 二维数组初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358614/