Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维阵列不打印_Java_Arrays_Input_2d - Fatal编程技术网

Java 二维阵列不打印

Java 二维阵列不打印,java,arrays,input,2d,Java,Arrays,Input,2d,我正在尝试制作一个基本上充当房间/网格的二维阵列,就像一个自顶向下的视图 此代码基于用户输入创建一个维度行x列的数组。然后我让它用一个“.”来初始化每个单元格,以表示一个空间 我的问题是,为什么当我使用printRoom()方法时,它根本不打印任何内容?双嵌套for循环在数组中运行,但不会打印任何内容 我知道这与用户输入有关,因为我尝试用row=5和col=5初始化,结果打印得很好 谢谢你的帮助 这是房间等级: public class Room { int row, col;

我正在尝试制作一个基本上充当房间/网格的二维阵列,就像一个自顶向下的视图

此代码基于用户输入创建一个维度行x列的数组。然后我让它用一个“.”来初始化每个单元格,以表示一个空间

我的问题是,为什么当我使用printRoom()方法时,它根本不打印任何内容?双嵌套for循环在数组中运行,但不会打印任何内容

我知道这与用户输入有关,因为我尝试用row=5和col=5初始化,结果打印得很好

谢谢你的帮助

这是房间等级:

public class Room
{
    int row, col;   
    String[][] arr = new String[row][col];

    //Room Constructor
    public Room(int row, int col)
    {
        this.row = row;
        this.col = col;              
    }

    //Fills the Room with "."
    public void fillRoom()
    {
        for (int i = 0; i < arr.length; i++)
        {
            for (int j = 0; j < arr[i].length; j++)
                arr[i][j] = ".";
        }
    }

    //Prints the entire room/grid
    public void printRoom()
    {
        for (int i = 0; i < arr.length; i++)
        {
            for (int j = 0; j < arr[i].length; j++)
                System.out.print(arr[i][j]);

            System.out.println();
        }
    }
}
以下是我运行并输入用户输入时的输出:

输入房间尺寸(col行)


4 6当初始化数组时,
为零,因此它是一个0x0数组

因此,(int i=0;i中的保护条件立即为false,因此从不执行

您需要将数组初始化移动到构造函数中:

arr = new String[row][col];

初始化数组时,
为零,因此它是一个0x0数组

因此,(int i=0;i中的保护条件立即为false,因此从不执行

您需要将数组初始化移动到构造函数中:

arr = new String[row][col];

尝试在此处添加2D数组的长度,因为之前的数组初始化为零:

  int row= 4, col= 6; 
  String[][] arr = new String[row][col];
或者您可以在构造函数中对其进行如下初始化:

  String[][] arr;
//Room Constructor
public Room(int row, int col)
   {
   arr = new String[row][col];
    this.row = row;
    this.col = col;              
    }
在main方法中,初始化

 int row= 4, col= 6;

尝试在此处添加2D数组的长度,因为之前的数组初始化为零:

  int row= 4, col= 6; 
  String[][] arr = new String[row][col];
或者您可以在构造函数中对其进行如下初始化:

  String[][] arr;
//Room Constructor
public Room(int row, int col)
   {
   arr = new String[row][col];
    this.row = row;
    this.col = col;              
    }
在main方法中,初始化

 int row= 4, col= 6;

要解决此问题,请在房间对象的构造函数处创建数组:

int row, col;   
String[][] arr = null

//Room Constructor
public Room(int row, int col)
{
    this.row = row;
    this.col = col;
    arr = new String[row][col];
}

要解决此问题,请在房间对象的构造函数处创建数组:

int row, col;   
String[][] arr = null

//Room Constructor
public Room(int row, int col)
{
    this.row = row;
    this.col = col;
    arr = new String[row][col];
}

我明白了,它现在起作用了!我没有意识到您可以声明字符串[][]数组,或者任何类似的数组,然后在初始化时调整它的大小-我认为您必须在声明中指定大小。谢谢你的提示!我明白了,它现在起作用了!我没有意识到您可以声明字符串[][]数组,或者任何类似的数组,然后在初始化时调整它的大小-我认为您必须在声明中指定大小。谢谢你的提示!