我得到了前两列,但现在我无法将其余列与其标题对齐
打印什么
Male Female
Rank Name Number Name Number
1 Christopher 52,308 Jessica 46,459
2 Matthew 44,783 Ashley 45,548
3 Joshua 43,203 Brittany 36,535
4 Daniel 33,791 Amanda 34,389
5 Nicholas 27,901 Samantha 25,862
6 Anthony 25,070 Sarah 25,801
7 William 24,875 Stephanie 24,850
8 Kyle 22,695 Jennifer 22,217
9 Jacob 21,992 Elizabeth 20,738
System.out.printf("%4.5s %-3.20s %,-9d%10.20s%,9d%n",
rank,maleName,maleCount,femaleName,femaleCount);
答案 0 :(得分:1)
您使用的字符串格式(例如%4.5s
,%-3.20s
和%10.20s
不会按照您的想法执行。
例如,%10.20s
表示格式化一个字符串,至少包含10个字符,最多20个字符。这会将短字符串填充到10,并将长字符串截断为20个字符。
为了获得一致的格式,String格式的.
之前和之后的数字应该相同。因此,例如,左对齐maleName
并且无论名称多长,总是取20个字符,然后使用%-20.20s
答案 1 :(得分:0)
首先,为列提供一个更大的常量。例如,colum' name',
int columnLength = 15;
在打印' name'之前,计算 columnLength 与名称字符数之间的差异,让我们称之为nbSpace,
int nbSpace = columnLength - name.length;
String space = "";
for(int i = 0; i < nbSpace; i++) {
space += " ";
}
然后,按空格填写
System.out.print(name+space);