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

Posted

技术标签:

【中文标题】如何在 Java 中使用前导空格格式化数字【英文标题】:How to format numbers with leading spaces in Java 【发布时间】:2014-04-27 18:36:33 【问题描述】:

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

    DecimalFormat fmt = new DecimalFormat("000");
    for (int y=1; y<12; y++)
    
        System.out.print(fmt.format(y) + " ");
    

输出如下:

001 002 003 004 005 006 007 008 009 010 011

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

1 2 3 4 5 6 7 8 9 10 11

注意:我知道 *** 中有几个问题要求在 String 中填充空格。我知道如何用字符串来做到这一点。我问是否可以用填充空间格式化 NUMBERS

【问题讨论】:

【参考方案1】:
    for (int y=1; y<12; y++)
    
        System.out.print(String.format("%1$4s", y));
    

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

See the javadocs

【讨论】:

为什么要串联? 我同意上面的评论,我认为应该更好:String.format("%1$5s", y) 已更改。我在考虑使用变量 @Avempace 如果我们这样做,所有数字(无论其长度如何)都将获得相同数量的空间填充。 您选择的模式似乎过于复杂。 %4d 更容易阅读。【参考方案2】:
int i = 0;
while (i < 12) 
    System.out.printf("%4d", i);
    ++i;

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

【讨论】:

以上是关于如何在 Java 中使用前导空格格式化数字的主要内容,如果未能解决你的问题,请参考以下文章

格式化带前导符号的数字

如何写没有前导零或前导空格的时间?

使用最大字符数格式化数字

java中如何实现由第一行输入行数,剩下几行输入数据(每行一个)

删除 Eclipse 中单行注释中多余的前导空格

格式化包含带前导零的小数点的数字