为什么我的二维数组打印所有 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();
    }
}
您需要

运行setData才能将所有值放入。

   public static void main (String [] args)
   {
      setData();
      printMaze();
   }

你从不调用 setData() 方法,所以数组充满了默认值 0。

你的数组打印所有 0,因为你从不初始化它(你只是声明了 setData() 并且你没有调用它),因此它的元素获得默认值,对于 int 变量为 0。

如果你不想使用 setData() 方法,你可以在 init bloc 中初始化你的数组:

     {
          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; 
      }  

这样,你只需要实例化你的类迷宫并调用方法printMaze():

  public static void main ( String[] args ) {
        Maze mmg = new Maze();
        mmg.printMaze ();
       }

正如 jnd 所说,您需要在对象引用 - mmgg 上调用 setData() 方法,如下所示:

mmgg.setData();

另外,为了回答你的问题,它打印所有0的原因;正如你所观察到的,在实例化对象时(这是通过"new"运算符发生的),编译器将类的成员变量设置为"合理"默认值。

以下是默认值 - 它们解释了为什么在 Maze 类实例化但没有调用 setData() 方法后,迷宫 2D 数组中的 int 值为零......

  1. 字节 [默认值 = 0]
  2. 短 [默认值 = 0]
  3. int [默认值 = 0]
  4. 长 [默认值 = 0L]
  5. 浮点数 [默认值 = 0.0F]
  6. 双倍 [默认值 = 0.0D]
  7. 布尔值 [默认值 = 假]
  8. 字符 [默认值 ="\u0000"]
  9. 字符串(或任何对象)[默认值 = 空]

[注意:- 编译器从不为未初始化的局部变量分配默认值]

最新更新