首页 > 解决方案 > 如何使用 Cell 的 toString() 方法为 2D 单元格数组创建 toString() 方法?

问题描述

我的任务是实现 Conway 的生命游戏,但我坚持在toString()方法中表示我的游戏地图(一个 2D 单元格阵列)。我的 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 "#";
    }
}

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

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

我希望有人可以帮助我。

标签: javamultidimensional-arraytostring

解决方案


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

要附加到str,您可以执行以下操作:

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

这也将要求您初始化str为非空值,因此 str = null;您需要执行str = "";或等效的操作。


推荐阅读