如何使用Java中的前导空格格式化数字

use*_*460 13 java formatting space padding

我有以下Java代码来生成由零填充的数字.

    DecimalFormat fmt = new DecimalFormat("000");
    for (int y=1; y<12; y++)
    {
        System.out.print(fmt.format(y) + " ");
    }
Run Code Online (Sandbox Code Playgroud)

输出如下:

001 002 003 004 005 006 007 008 009 010 011

我的问题是:如何使用填充空格而不是前导零生成数字?

1 2 3 4 5 6 7 8 9 10 11

注意:我知道StackOverflow中有几个问题需要在String中填充空格.我知道如何用String做到这一点.我想问是否可以用填充空格格式化NUMBERS

Rau*_*uiu 24

    for (int y=1; y<12; y++)
    {
        System.out.print(String.format("%1$4s", y));
    }
Run Code Online (Sandbox Code Playgroud)

它将打印长度为4的字符串,因此如果y = 1,它将打印3个空格和1,"1",如果y为10,则打印2个空格,10,"10"

请参阅javadocs

  • 您选择的模式似乎过于复杂。`%4d` 更容易阅读。 (3认同)
  • 连接为什么? (2认同)

use*_*692 6

int i = 0;
while (i < 12) {
    System.out.printf("%4d", i);
    ++i;
}
Run Code Online (Sandbox Code Playgroud)

4是宽度.您也可以用格式替换printf.