我该如何格式化一组空间,使结果看起来像这样?尝试获取等级、计数和%输出之间的确切间距类型。计数列应与字母t匹配。一个我特别困惑的是%由于压痕的差异取决于数字;e、 g.如果是100.00,则1应与%对齐,10的倍数即10-99.00应为%后的1个空格,0.00应为%后的2个空格。提前谢谢!
35g0bw711#
你要找的是所谓的“固定列宽”格式。最简单的方法是使用 printf 方法。在你的情况下,你应该这样做:
printf
System.out.println("Grade Count %"); System.out.println("----- ----- ------"); for (Grade g : grades) { System.out.printf("%-5s %5d %6.2f%n", g.getGrade(), g.getCount(), g.getPercent()); }
第一个论点 printf 是一个格式字符串,包括固定文本(这里只是一些空格)和以 % 以字母结尾;其余参数是要格式化的数据。下面是本例中格式字符串的简要分解: %-5s 与 g.getGrade() 论证;这个 5 表示5列的固定字段宽度 - 意思是左对齐 s 意味着我们正在格式化 String 论点 %5d 与 g.getCount() 论证;这个 d 意味着我们正在格式化一个十进制整数( int , long ,或 BigDecimal )号码, 5 是字段宽度,并且缺少 - 暗示正确的理由; %6.2f 与 g.getPercent() 论证;这个 f 意味着我们正在格式化一个浮点( float , double 或者 BigDecimal )号码, 6 是整个字段宽度, .2 表示小数点后有两位数字,没有 - 意思是正确的辩护。有关更完整的讨论,请阅读格式字符串。
%
%-5s
g.getGrade()
5
-
s
String
%5d
g.getCount()
d
int
long
BigDecimal
%6.2f
g.getPercent()
f
float
double
6
.2
1条答案
按热度按时间35g0bw711#
你要找的是所谓的“固定列宽”格式。最简单的方法是使用
printf
方法。在你的情况下,你应该这样做:第一个论点
printf
是一个格式字符串,包括固定文本(这里只是一些空格)和以%
以字母结尾;其余参数是要格式化的数据。下面是本例中格式字符串的简要分解:%-5s
与g.getGrade()
论证;这个5
表示5列的固定字段宽度-
意思是左对齐s
意味着我们正在格式化String
论点%5d
与g.getCount()
论证;这个d
意味着我们正在格式化一个十进制整数(int
,long
,或BigDecimal
)号码,5
是字段宽度,并且缺少-
暗示正确的理由;%6.2f
与g.getPercent()
论证;这个f
意味着我们正在格式化一个浮点(float
,double
或者BigDecimal
)号码,6
是整个字段宽度,.2
表示小数点后有两位数字,没有-
意思是正确的辩护。有关更完整的讨论,请阅读格式字符串。