有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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();
    }
}

共 (4) 个答案

  1. # 1 楼答案

    您从不调用setData()方法,因此数组中充满了默认值0

  2. # 2 楼答案

    您的数组打印所有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 ();
    
           }
    
  3. # 3 楼答案

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

    嗯。setData()

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

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

    1. 字节[默认值=0]
    2. 短[默认值=0]
    3. int[默认值=0]
    4. 长[默认值=0L]
    5. 浮动[默认值=0.0F]
    6. 双精度[默认值=0.0D]
    7. 布尔值[默认值=false]
    8. 字符[默认值='\u0000']
    9. 字符串(或任何对象)[默认值=null]

    [NB:-编译器从不为未初始化的局部变量指定默认值]

  4. # 4 楼答案

    您需要运行setData将所有值放入

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