如何使用 Cell 的 toString() 方法为二维单元格数组制作 toString() 方法?

How to make a toString() method for a 2D Array of Cells using the toString() method of Cell?

我的任务是实现 Conway 的生命游戏,但我一直坚持在 toString() 方法中表示我的游戏地图(二维单元阵列)。 我的 toString() 方法:

public String toString() {
    int h;
    int j;
    String str;
    str = null;
    String[][] stringArray = new String[map.length][map.length];
    for (h = 0; h < getWidth(); h++) {
        for (j = 0; j < getHeight(); j++) {
            Cell i = getCell(h, j);
            stringArray[h][j] = i.toString() + " ";
        }
    }
    int k;
    int m;
    for (k = 0; k < stringArray.length; k++) {
        for (m = 0; m < stringArray.length; m++) {
            str = stringArray[k][m];
        }
    }
    return str;
}

如您所见,我需要调用特定于单元格的 toString() 方法作为任务的一部分。 此 toString() 方法如下所示:

public String toString() {
    if (status == ECellStatus.DEAD) {
        return ".";
    } else {
        return "#";
    }
}

在实际代码中,我只得到最后一个单元格的表示,但我想这样打印它:

. . . . .  
. . # . .  
. . . # .  
. # # # .  
. . . . .  

希望有人能帮帮我。

在第二个 for 循环中,您将 str 重新分配给当前 Cell 的 toString 而不是 appending/adding ,这可能是您打算做的。

要附加到 str,您可以这样做:

for (k = 0; k < stringArray.length; k++) {
    for (m = 0; m < stringArray.length; m++) {
        str += stringArray[k][m];
    }
}

这还需要您将 str 初始化为非空值,因此不用 str = null; 您将需要执行 str = ""; 或类似的操作。