如何使用printf()正确格式化文本(Java)
你好,我想打印一些东西,使它们对齐
for (int i = 0; i < temp.size(); i++) {
//creatureT += "[" + temp.get(i).getCreatureType() + "]";
creatureS = "\t" + temp.get(i).getName();
creatureT = " [" + temp.get(i).getCreatureType() + "]";
System.out.printf(creatureS + "%15a",creatureT + "\n");
}
输出是
Lily [Animal]
Mary [NPC]
Peter [Animal]
Squash [PC]
我只想让[Animal]、[NPC]和[PC]像这样对齐
Lily [Animal]
Mary [NPC]
Peter [Animal]
Squash [PC]
假设我知道没有名字会超过15个字符
# 1 楼答案
其基本思想是,在格式字符串(第一个参数)中描述完整的格式,并提供所有动态数据作为附加属性
通过从动态数据(似乎是生物名称)构建格式字符串,可以将这两者混合在一起,这将导致意外的结果。改为这样做:
# 2 楼答案
我想你会发现,在格式字符串本身中进行所有格式设置要容易得多,例如
哪个会打印
您可以咨询String formatting documentation的确切格式,以便为字符串打印至少15个空格,以实现对齐效果,例如
关键是为
%15s
中参数列表中的第一项指定15个字符的“宽度”# 3 楼答案
像这样格式化%15s会使文本对齐。 你必须写%-15秒才能在15个图表中为第一个字符串留出位置。 第一个字符串将向左对齐,下一个字符串将从第16个图表开始