【问题标题】:Reading in a grid to a 2D array将网格读取到二维数组
【发布时间】:2015-12-15 18:28:04
【问题描述】:

我正在开发一个基本的棋盘游戏,但我遇到了文件读取问题。我正在尝试像这样在网格中阅读:

1 1 2 1 1 1
1 1 2 1 1 1
1 1 2 3 1 1
1 1 1 3 1 1
1 1 1 4 1 1
1 2 2 2 4 1

我的计划是在二维数组中读取网格后,将每个数字与不同的东西相关联(1 是墙,2 是路径等)。任何帮助将不胜感激。

注意读取:使用文件阅读器扫描文本文件,以便将网格放置在二维数组中

注意:我正在开发 LibGDX 中的游戏

【问题讨论】:

  • 有什么不同?
  • 你的意思是把 1 换成墙等?
  • “阅读”是什么意思?
  • 读取:使用文件阅读器扫描文本文件,以便将网格放置在二维数组中
  • 这个问题被标记为 JavaJavaScript。这是两种具有相似名称的不同语言,但问题本身并不能说明您的意思。

标签: java arrays libgdx 2d


【解决方案1】:

Libgdx 的 FileHandle 有一个辅助方法可以轻松地将文本文件读入字符串。以下应该适用于任意大小的非方形或锯齿状数组。假设您的文件位于资产目录中:

String fileString = Gdx.files.internal("myFile.txt").readString();
String[] lines = fileString.split("\n");
int[][] theArray = new int[lines.length][];
for (int i=0; i<lines.length; i++){
    String[] elements = lines[i].split(" ");
    theArray[i] = new String[elements.length];
    for (int j=0; j<elements.length; j++)
        theArray[i][j] = Integer.parseInt(elements[j]);
}

【讨论】:

    【解决方案2】:

    假设读入意味着将此字符串转换为数字数组的数组

    var str = "1 1 2 1 1 1\n1 1 2 1 1 1\n1 1 2 3 1 1\n1 1 1 3 1 1\n1 1 1 4 1 1\n1 2 2 2 4 1";
    
    var arr = str.split('\n').map(e => e.split(' ').map(Number));
    
    /*
    [
        [1, 1, 2, 1, 1, 1],
        [1, 1, 2, 1, 1, 1],
        [1, 1, 2, 3, 1, 1],
        [1, 1, 1, 3, 1, 1],
        [1, 1, 1, 4, 1, 1],
        [1, 2, 2, 2, 4, 1]
    ]
    */
    

    发生了什么事?

    1. 我们根据换行符'\n' 划分字符串
    2. 我们根据空格将每个部分划分为' '
    3. 我们将 2 中的每个结果转换为 Number

    作为Andy points out,我在上面的函数中使用了ES6 箭头符号

    // ES6 arrow notation
    (arg1, arg2) => expr
    // can be written as legacy
    function (arg1, arg2) { return expr;}
    

    【讨论】:

    • 可能值得一提的是 ES6 JS 而不是 ES5。
    • 我明白你在说什么,但不是我的意思。
    • @timval 我猜这个答案的问题类似于“但我如何获得str?”。答案取决于 哪里 您的 文本文件 位于,即本地计算机或在线,如果它在线,那么它是否在同一来源? 请注意我是从 JavaScript 的角度来回答的(正如你标记的那样)
    • @PaulS。如上所述,我正在使用 Java 在 LibGDX 中工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多