您好我想打印一些内容以便它们对齐。
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个字符。
答案 0 :(得分:5)
我认为你会发现在格式字符串本身中进行所有格式化要容易得多,即
System.out.printf("\t%s [%s]\n", creature.getName(), creature.getCreatureType());
会打印
Lily [Animal]
etc...
您可以参考String formatting documentation确切的格式,以便为字符串打印至少15个空格以实现对齐效果,例如
System.out.printf("\t%15s[%s]\n", creature.getName(), creature.getCreatureType());
关键是为%15s
中参数列表中的第一项指定15个字符的“宽度”。
答案 1 :(得分:2)
基本思路是您在格式字符串(第一个参数)中描述完整格式,并将所有动态数据作为附加属性提供。
通过从动态数据(似乎是生物名称)构建格式字符串来混合这两者,这将导致意外结果。这样做:
Creature t = temp.get(i);
System.out.printf("\t%15s [%s]\n", t.getname(), t.getCreatureType());
答案 2 :(得分:0)
像这样的%15s格式可以使类似文本的行正确显示。 您必须写%-15来放置15个图表中的第一个字符串。 第一个字符串将左对齐,下一个字符串将从第16个图表开始
Lily [Animal]
Mary [NPC]
Peter [Animal]
Squash [PC]