【问题标题】:How to make a toString() method for a 2D Array of Cells using the toString() method of Cell?如何使用 Cell 的 toString() 方法为 2D 单元格数组创建 toString() 方法?
【发布时间】:2020-07-27 17:05:45
【问题描述】:

我的任务是实现 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 "#";
    }
}

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

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

希望有人能帮帮我。

【问题讨论】:

  • 看来你需要做str += stringArray[k][m];
  • 每行后还要加“\n”

标签: java multidimensional-array tostring


【解决方案1】:

在第二个 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 = ""; 或类似的。

【讨论】:

  • 我得到的结果是这样的:。 . . . . . . . # . . # . # . . . # # 。 . . . . .但我想把它作为 2D-Array 给出。它应该完全像上面那样我该怎么做?
  • 啊,我错过了会发生的事情! @Malone2409 这是因为您需要在每一行之后添加一个换行符才能使其显示为该块结构。在第二个 for 循环中,在内部 for 循环之后但仍在外部 for 循环内,您可以添加 str += "\n";
猜你喜欢
  • 2011-06-26
  • 2021-10-29
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多