具有设置数量的空格的Java格式

具有设置数量的空格的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您正在寻找的是所谓的“固定列宽”格式。实现它的最

我如何格式化一组空间,使结果看起来像这样? 尝试获取坡度、计数和%输出之间的确切间距类型。计数列应与字母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

您正在寻找的是所谓的“固定列宽”格式。实现它的最简单方法是使用
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
(没有
-
)来右对齐百分比。