java为什么我的二维数组打印所有0?
我有一个名为Maze的二维数组。它是一个全局变量。我在setData()方法中硬编码了每个位置的数据。但是,当我尝试打印下面的数组时,它会打印所有0。为什么呢?多谢各位
public class Maze
{
int [][] maze = new int[4][6];
public void setData()
{
maze[0][0] = 1; maze[0][1] = 0; maze[0][2] = 1; maze[0][3] = 1; maze[0][4] = 0; maze[0][5] = 1;
maze[1][0] = 0; maze[1][1] = 0; maze[1][2] = 1; maze[1][3] = 0; maze[1][4] = 0; maze[1][5] = 0;
maze[2][0] = 1; maze[2][1] = 0; maze[2][2] = 1; maze[2][3] = 0; maze[2][4] = 1; maze[2][5] = 0;
maze[3][0] = 0; maze[3][1] = 0; maze[3][2] = 0; maze[3][3] = 0; maze[3][4] = 1; maze[3][5] = 1;
}
public void printMaze()
{
System.out.println("The matrix: ");
for (int m=0; m<4; m++)
{
for (int n=0; n<6; n++)
System.out.print(maze[m][n]);
System.out.println();
}
}
}
public class MazeTester
{
public static void main (String [] args)
{
Maze mmgg = new Maze();
mmgg.printMaze();
}
}
# 1 楼答案
您从不调用setData()方法,因此数组中充满了默认值0
# 2 楼答案
您的数组打印所有0,因为您从未初始化它(您只是声明了setData(),而没有调用它),因此它的元素得到默认值,对于int变量为0
如果不想使用setData()方法,可以在init bloc中初始化数组:
这样,您只需实例化类迷宫并调用printMaze()方法:
# 3 楼答案
正如jnd所说,您需要在对象引用-mmgg上调用setData()方法,如下所示:
嗯。setData()
另外,为了回答您的问题,它打印所有0的原因;正如您所观察到的,在实例化对象时(这通过“new”操作符发生),编译器会将类的成员变量设置为“合理”默认值
以下是默认值-这解释了为什么在实例化迷宫类后,迷宫2D数组中的int值为零,但没有调用setData()方法
[NB:-编译器从不为未初始化的局部变量指定默认值]
# 4 楼答案
您需要运行
setData
将所有值放入