java - 将文本转换为二维数组

标签 java arrays 2d

我正在尝试用文本文件填充二维数组。

我的文本文件如下所示:

#######
# .# @#
#  #  #
#$##$##
#  #  #
#     #
#######

它基本上是游戏的一个级别。我的最终二维数组应如下所示:

char [][] a = new char [6][6];

a[0][0] = #; a[0][1] = #; ... a[0][6] = #;
a[1][0] = #; a[1][1] =  ; a[1][2] = . ; ... a[1][6] = #;
.
.
.
a[6][0] = #;        . . .     a[6][6] = #;   

我的尝试是读取行,将它们转换为一维数组,并用两个循环填充二维数组。然后我需要将它们打印出来。

public class pp {

public static void main (String[] args) {

char [][]array2d = new char [6][7];

In.open("Level2.txt");

    while (In.done()){

        for (int rows=0; rows<7; rows++){

            String string = In.readLine();
            char [] array1d = string.toCharArray();

                for(int columns=0; columns<7;columns++){

                    array2d [rows][columns] = array1d [columns];
                    Out.print(array2d[rows][columns]);  

                    }                                       

            Out.println(); 

        }

    }

In.close();}}

奇怪的是,当我将列设置为 7 时,它只打印所有内容

char [][]a = new char [6][7];

行数为 6

 for (int rows=0; rows<6; rows++){

我也变成了错误:
线程“main”中的异常 java.lang.ArrayIndexOutofBoundException:0 at pp.main(pp.java:18)

就是这里

array2d [rows][columns] = array1d [columns];

而且我也无法打印 array2d (代码未显示)。例如,当我尝试获取 [6][0] 时,它根本不执行任何操作。

我确实在搜索和尝试了几个小时,我希望你能帮助我。

最佳答案

Java 8 Streams使从文本文件创建二维字符数组变得非常容易。

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

其中一个区别是文本文件将决定二维字符数组的大小。

关于java - 将文本转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030065/

相关文章:

java - Android - 2 小时后获取时间

java - 使用 JBoss 或 Tomcat 的独立应用程序

java - 如何在成功验证后使用 Microsoft OAuth 获取用户信息

php - 如何从 PHP 中的数组填充组合框?

java - 如何使用 JavaDB 作为 SQL 解析器

JavaScript 数组长度问题

python - 在 NumPy 中,创建更大的数组会更快吗?

javascript - 为什么完全踩刹车后箱子还继续移动?

c - 二维袖口变换

javascript - 用于 2D 开发的 3D JS 引擎?