Java中的格式化打印

5

我有这段代码:

public String toString(Day day)
{
    String s = day.getDayName() + "    " + day.toString();
    return s;
}

这是 Day 类的 toString 方法:

public String toString()
{
    String s = "";
    for (Slot slot: slots)
        s += slot.toString();
    return s;
}

当反复调用时,它会打印:

barbi
星期一    10:   11:   12:   2:   3:   4:
星期二    10:   11:   12:   2:   3:   4: X
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2:   3:   4:
星期五    10:   11:   12:   2:   3:   4:
    bobbi
星期一    10:   11:   12:   2:   3:   4:
星期二    10:   11:   12:   2:   3:   4:
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2: X 3:   4:
星期五    10:   11:   12:   2:   3:   4:
    bunny
星期一    10:   11:   12:   2:   3:   4:
星期二    10:   11:   12:   2:   3:   4:
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2:   3:   4:
星期五    10:   11:   12:   2:   3:   4:

然而,我想以这种方式打印:

巴比,收入为$95.00
星期一    10:   11:   12: X 2:   3:   4:
星期二    10:   11:   12:   2:   3:   4:
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2:   3:   4:
星期五    10:   11:   12:   2:   3:   4:
鲍比,收入为$45.00
星期一    10:   11:   12:   2:   3:   4:
星期二    10:   11:   12:   2:   3: X 4:
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2:   3:   4:
星期五    10:   11:   12:   2:   3:   4:
兔子,收入为$0.00
星期一    10:   11:   12:   2:   3:   4:
星期二    10:   11:   12:   2:   3:   4:
星期三    10:   11:   12:   2:   3:   4:
星期四    10:   11:   12:   2:   3:   4:
星期五    10:   11:   12:   2:   3:   4:

我知道这可以使用Java中的格式化打印来完成,但我不知道如何做到这一点。

3个回答

4
你可以使用String.format(),它将接受宽度参数。
我认为你可以修改为:
String s = day.getDayName() + "    " + day.toString();

to:

return String.format("%9s %s", day.getDayName(), day.toString());

实现你想要的。


3

这是使用java.util.Formatter的工作。

    String[][] kvs = {
            { "Name", "Johnny" },
            { "Age", "19" },
            { "Sex", "Female" },
    };
    for (String[] kv : kvs) {
        System.out.println(
            String.format("%-10s:%10s", kv[0], kv[1])
        );
    }

这将打印:

Name      :    Johnny
Age       :        19
Sex       :    Female

语法

%[flags][width]conversion
  • - 是左对齐的标志
  • sString 转换

关于 String 拼接

请注意,您不应该在循环中使用 += 来构建一个 String。相反,您应该使用 StringBuilder

StringBuilder sb = new StringBuilder();
for (Slot slot: slots) {
    sb.append(slot.toString());
}
return sb.toString();

相关问题


0
你查看了java.util.Formatter吗?顺便说一下,它从1.5版本开始可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接