具有设置数量的空格的Java格式
我如何格式化一组空间,使结果看起来像这样? 尝试获取坡度、计数和%输出之间的确切间距类型。计数列应与字母t匹配。我特别困惑的是,由于数字的不同,缩进的差异是%;e、 g.如果为100.00,则1应与%对齐,即10-99.00的倍数应为%后的1个空格,0.00应为%后的2个空格 提前谢谢 *等级计数% *__________________________ *F 0.00 *p 120.00 *C 240.00 *D 0.00具有设置数量的空格的Java格式,java,formatting,format,indentation,spaces,Java,Formatting,Format,Indentation,Spaces,我如何格式化一组空间,使结果看起来像这样? 尝试获取坡度、计数和%输出之间的确切间距类型。计数列应与字母t匹配。我特别困惑的是,由于数字的不同,缩进的差异是%;e、 g.如果为100.00,则1应与%对齐,即10-99.00的倍数应为%后的1个空格,0.00应为%后的2个空格 提前谢谢 *等级计数% *__________________________ *F 0.00 *p 120.00 *C 240.00 *D 0.00 *HD 2 40.00您正在寻找的是所谓的“固定列宽”格式。实现它的最
*HD 2 40.00您正在寻找的是所谓的“固定列宽”格式。实现它的最简单方法是使用
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
参数字符串
与%5d
参数匹配;g.getCount()
表示我们正在格式化一个十进制整数(d
、int
或long
)数字,BigDecimal
是字段宽度,缺少5
表示正确的对齐方式-
与%6.2f
参数匹配;g.getPercent()
表示我们正在格式化一个浮点(f
,float
或double
)数字,BigDecimal
表示整个字段宽度,6
表示小数点后将有两位数字,没有.2
表示右对齐-
有关更完整的讨论,请阅读。查看
字符串.format
方法:(System.out.printf
也几乎相同),以及格式化指南:您可以使用一种填充规则(如%[…]s
)来控制每个数据行的参数前后显示的空格数(等级、计数、百分比)。您不必测试实际值来确定空间量。我的坏!%-6.2f
应该是%6.2f
(没有-
)来右对齐百分比。