Java:二维char数组

时间:2016-12-01 22:03:18

标签: java

过去几天我一直试图编写一款名为Sokoban的游戏。游戏的级别是简单的.txt文件,你可以交换。我已经使用BufferedReader读取了.txt文件,但是将其保存到二维char数组时出现问题,因为每个级别的行数和列数不同。有人告诉我要使用charAt,但我该怎么做。

Sokobanlevel格式(http://www.sokoban-online.de/help/sokoban/level-format.html

希望你能帮助我。感谢。

String file = "...";
BufferedReader br = Files.newBufferedReader();
String line = null;
int rows = file.length;
int cols = file[0].length;
char[][] room = new char [rows][cols];          
while ((line = br.readLine()) != null) {
            System.out.println(room[rows][cols]);
        }

2 个答案:

答案 0 :(得分:0)

您可以初始化2D数组,以便每行具有不同数量的列:

char[][] c = new char[7][];
c[0] = new char[5];
c[1] = new char[3];
//etc

答案 1 :(得分:0)

如果不知道文件中的行数,您需要首先从文件中读取所有内容以确定行数。如果您使用List<char[]>来存储每行的char数组,这将是最简单的。

你可以轻松地在java 8中编写具有与单行相同功能的东西:

File fl = new File(file);
char[][] array = Files.lines(fl.toPath()).map(String::toCharArray).toArray(char[][]::new);