【问题标题】:Java formatting something of variable size with FormatterJava 使用 Formatter 格式化可变大小的东西
【发布时间】:2013-11-10 06:21:38
【问题描述】:

所以我正在尝试编写一个 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 循环并逐行、逐个地打印出来,但我希望有一种更清洁的方法来做到这一点。

【问题讨论】:

    标签: java formatter


    【解决方案1】:

    我会尝试使用StringBuilder 而不是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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 2018-07-07
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      相关资源
      最近更新 更多