gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:57:36 25 4
gpt4 key购买 nike

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

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

  • '@' = 要移动的行李

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

我使用的是二维数组 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com