有 Java 编程相关的问题?

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

Java:2维字符数组

在过去的几天里,我一直在尝试编写一个名为Sokoban的游戏。游戏的层次很简单。可以交换的txt文件。我已经读过了。txt文件,但在将其保存到二维字符数组时遇到问题,因为每一级的行数和列数不同。有人告诉我要利用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) 个答案

  1. # 1 楼答案

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

    不过,您可以轻松编写与java 8中的一行程序功能相同的东西:

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

    可以初始化二维数组,以便每行具有不同的列数:

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