gpt4 book ai didi

java - 如何在不设置维度的情况下初始化二维数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:02 25 4
gpt4 key购买 nike

我使用的方法读取文件并根据前 3 行设置 2D 数组的大小。我的方法返回一个 Room[][] 对象,并且该方法还设置 Room[][] 对象的尺寸,以便我在执行该方法之前无法将其设置在外部。例如:

public Room[][] readRooms(String filepath) throws IOException
{
int numberOfRooms;
int numRows;
int numCols;
Room[][] grid;

try
{
FileReader fr = new FileReader(filepath);
BufferedReader br = new BufferedReader(fr);
String next = null;

numberOfRooms = Integer.parseInt(br.readLine());
numRows = Integer.parseInt(br.readLine());
numCols = Integer.parseInt(br.readLine());

grid = new Room[numRows][numCols];

while((next = br.readLine()) != null)
{
//do stuff
}
}
catch{ //catch stuff }

return grid;
}

我试图在另一个类的 main 方法中创建一个新的 Room[][] 对象来执行此操作:

Room[][] maze = readRooms(myfilepath);

但是,Java 要求先定义迷宫,然后才能像这样使用它。是否无法在不显式声明维度的情况下初始化二维数组?

编辑:提问者的主要方法:

public static void main(String args[])
{
Room[][] maze;
maze = readRooms("C:/Users/Blaise/Programming/csc300/Maze");
}

最佳答案

错误是您的函数readRooms不是static。使其静态,您将不需要Room 实例来调用它。但您确实需要在调用者中处理 IOException(或将 throws IOException 添加到 main())

public static Room[][] readRooms(String filepath) throws IOException

此外,您不能双重声明 maze 的类型。

public static void main(String args[])
{
Room[][] maze;
try {
maze = Room.readRooms("C:/Users/Blaise/Programming/csc300/Maze");
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String args[]) throws IOException
{
// Room[][] maze; // <-- not
Room[][] maze = Room.readRooms("C:/Users/Blaise/Programming/csc300/Maze");
}

关于java - 如何在不设置维度的情况下初始化二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26787278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com