0

所以我正在尝试编写一个 toString 方法,该方法打印一个大小为 N x N 的可变大小 Board 对象的表示,例如对于 N = 6,表示将如下所示:

===
    2r -- 2r 2r -- 2b
    -- -- 2r -- 3r --
    2r 3r 2r 3r -- 2b
    3r 1r 3r 2r 2r 2b
    2b 4r 3r 1r 3r 2b
    2b 2b 3b 2r 3b 1b
===

该板上的每个“正方形”都存储在 Square[] 中。我的问题是,由于这个板的大小是可变的,我将如何编写 Formatter.format 使用的格式字符串?

这是我到目前为止所拥有的,给定的正方形是我的 Square[]:

/** Returns my dumped representation. */
@Override
public String toString() {
    Formatter out = new Formatter();
    String format = "Something here";
    out.format(format, squares);
    return out.toString();
}

我正在考虑尝试使用几个 for 循环并逐行、逐个地打印出来,但我希望有一种更清洁的方法来做到这一点。

4

1 回答 1

0

我会尝试使用 aStringBuilder而不是 a Formatter

final StringBuilder sb = new StringBuilder();
final int n = (int) Math.sqrt(squares.length);
for (int row = 0; row < n; row++) {
    for (int col = 0; col < n; col++) {
        final int offset = row * n + col;
        final Square square = squares[offset];
        sb.append(square.toString())

        final boolean lastCol = col == (n - 1);
        sb.append(lastCol ? "\n" : " ");
    }
}
return sb.toString();
于 2013-11-09T22:21:38.743 回答