java - 如何将字符串转换为二维数组 (java)(GameBoard)

标签 java arrays string multidimensional-array char

我有一个字符串文本,代表推箱子游戏中的一个级别。 我有几个不同的字符,每个字符都有不同的含义。

  • “#”= 墙
  • '$' = 玩家

  • '@' = 要移动的行李

  • '.' = 行李必须降落的目标

我使用的是二维数组 (10x10)

例如,这是级别:

String level = "##########" + "#       .#" + "#      ###" + "#  @  ####"  
             + "#   $ ####" + "#     ####"
             + "##########" + "##########" + "##########" + "##########";

现在我想知道如何将该字符串转换为二维数组,以便第一个 # 将位于 [0][0] 等等...

到目前为止我已经尝试过了,但不幸的是,我认为我还没有接近解决方案。

    int SPACE = 10;
    for (int i = 0; i < level.length(); i++) {
            char s = level.charAt(i);
            for (int rij = 0; rij < SPACE; rij++) {
                for (int kolom = 0; kolom < SPACE; kolom++) {
                    switch (s) {
                    case '#':
                        spelbord[rij][kolom] = "#";
                        break;
                    case '@':
                        spelbord[rij][kolom] = "@";
                        break;
                    case '$':
                        spelbord[rij][kolom] = "$";
                        break;
                    case '.':
                        spelbord[rij][kolom] = ".";
                        break;
                    }

                }
            }
        }

最佳答案

如果我理解正确的话,你的字符串级别只是一个包含“#”、“@”、“”、“$”和“.”的 100 个字符的字符串。每个字符映射到棋盘中的一个不同元素,即 char[][] 矩阵。

当前,您的代码循环遍历字符串。在每次迭代中,您都会(错误地)迭代整个板。这是不必要的,因为您应该已经知道将字符放入板中的位置。

要解决此问题,请为字符串保留一个单独的计数器并遍历板一次。每次您将一个字符放入棋盘中时,计数器就会递增。

int counter = 0;
for (int rij = 0; rij < SPACE; rij++) {
    for (int kolom = 0; kolom < SPACE; kolom ++) { //you are supposed to increment kolom here, not rij
        spelbord[rij][kolom] = level.charAt(counter++); //increment counter after assignment
    }
}

关于java - 如何将字符串转换为二维数组 (java)(GameBoard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60398726/

相关文章:

java - 从 JAX-WS 生成的代码访问 Web 服务时如何指定主机和端口?

java - 将 ImageView 的大小调整为另一个 ImageView 的大小的动画

Java:比较两个类列表,无论顺序如何

c++ - C++14 中的可变长度数组?

python - 如何用Python将用户输入转换为列表?

c++ - 考虑多种情​​况,在 C++ 中解析英国用户的全名

java - 如何重新提示无效 boolean 输入(java)

string - 如何在 Haskell 中通过列表理解正确生成字符串列表?

arrays - 通过 [String][String] 进行嵌套数组/对象访问

java - 创建具有数组返回类型的函数时出错