使用toString方法返回2D字符数组(迷宫)

问题描述 投票:-1回答:1

我在分配作业时遇到麻烦。我们应该从文件中读取迷宫(并解决它们,但现在不解决这个问题),但是我需要一个toString方法来返回准备打印的迷宫。我不知道如何正确打印它。另外,对于所有使用挪威语的人,我们都必须感到抱歉。感谢您的帮助!

[某些类上下文:我有一个Labyrint(迷宫)类,一个抽象类Rute(盒子)。 Rute有两个子类,SortRute(黑盒)和HvitRute(白盒),以及HvitRute的子类Aapning(打开)。黑框被识别为字符“#”,白被识别为“。”。盒子类具有方法char tilTegn(),该方法返回“#”或“。”。如果有用的话。

Kolonner / kol =列,rader / rad =行。

对于toString,我现在有这个,它打印内存地址:

public String toString() {
  String s = "";

  for(int i = 0; i < kolonner; i++) {
    for(int j = 0; j < rader; j++) {
      s += labyrint[i][j];
    }
    s += "\n";
  }
  return s;
}

示例迷宫,8是列,9是行:

8 9
#####.###
#.....#.#
#.#####.#
#.#.....#
#.#.###.#
#.#.#.#.#
#.....#.#
#########

[如果需要,这里是(一些)构造函数:

private Rute[][] labyrint;

private Labyrint(char[][] lab, int kol, int rad) {
labyrint = new Rute[kol][rad];
[...] }

这是从文件中读取的方法:

public static Labyrint lesFraFil(File fil) throws FileNotFoundException {
  Scanner leser = new Scanner(fil);
  int kolonner = leser.nextInt();
  int rader = leser.nextInt();
  char[][] labyrint = new char[kolonner][rader];

  while(leser.hasNext()){
    for(int i = 0; i < kolonner; i++){
      labyrint[i] = leser.next().toCharArray();
    }
  }
  return new Labyrint(labyrint, kolonner, rader);
}

谢谢!

java multidimensional-array char tostring
1个回答
0
投票

而不是使用+运算符添加到String中,请考虑创建StringBuilder或使用String.concat()方法来连接字符串。我们不像在原始类型中那样添加字符串。

s += labyrint[i][j];替换s.concat(labyrint[i][j];)

© www.soinside.com 2019 - 2024. All rights reserved.