我得到了前两列,但是现在我无法将其余的列与它们的标题对齐

打印什么

                 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);

最佳答案

您使用的String格式(例如%4.5s%-3.20s%10.20s)不会像您认为的那样起作用。

例如,%10.20s说格式化一个字符串,至少要包含10个字符,最多20个字符。这会将短字符串填充为10,并将长字符串截断为20个字符。

为了获得一致的格式,字符串格式中.之前和之后的数字应该相同。因此,例如,要使maleName左对齐并无论其名称有多长,都必须精确地使用20个字符,然后使用%-20.20s

10-07 15:32