我在分配作业时遇到麻烦。我们应该从文件中读取迷宫(并解决它们,但现在不解决这个问题),但是我需要一个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);
}
谢谢!
而不是使用+
运算符添加到String中,请考虑创建StringBuilder或使用String.concat()方法来连接字符串。我们不像在原始类型中那样添加字符串。
用s += labyrint[i][j];
替换s.concat(labyrint[i][j];)