0

したがって、サイズ N x N の可変サイズの Board オブジェクトの表現を出力する toString メソッドを作成しようとしています。たとえば、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」は、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

StringBuilder代わりに 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 に答える