Java中使用printf的简单格式化问题

时间:2009-12-02 21:53:56

标签: java format printf

我有一个包含12个数字的数组

int ary2[] = {3,5,9,11,15,18,22,23,30,31,35,39};

我想打印出2位数字和数字之间的空格。

打印输出示例如下:

 3  5  9 11 15 18 22 23 30 31 35 39

这是我有多远。

for(int i = 0; i < ary2.length; i++)
{
    System.out.printf("%-3s", ary2[i]);
}

我是新来的。 虽然我不会直接将其作为家庭作业提交,但它与我的家庭作业有关;因此,无论如何我都会使用那个家庭作业标签。

编辑:找到答案。

2 个答案:

答案 0 :(得分:4)

我不太确定我是否理解这个问题。您的代码示例似乎已经这样做了。或者您想将它们视为数字(右对齐)?如果是这样,那么您需要%d而不是(数字)%s(字符串)。看看以下是否符合您的需求:

System.out.printf("%2d ", ary2[i]);

这将打印:

 3  5  9 11 15 18 22 23 30 31 35 39 

而不是原始代码的作用:

3  5  9  11 15 18 22 23 30 31 35 39 

你只需要使用尾随空格;)

您可以在java.util.Formatter API中找到更多格式规则。

答案 1 :(得分:0)

不确定问题是什么,阅读其他答案和评论,我怀疑你想要显示数字0-padded:

    System.out.printf(" %02d", ary2[i]);

不是0-padded,2“place”,就像其他已写的那样:

    System.out.printf(" %2d", ...

我把空格放在开头......但只是我的偏好

你可以使用其他一些角色作为空间的分隔符,看看发生了什么 像System.out.printf("^%2d", ary2[i]);

这样的东西

如果要避开行的开头或结尾处的空格,则必须拆分输出

    System.out.printf("%2d", ary2[0]);  // no space here
    for(int i = 1; i < ary2.length; i++)
    {
        System.out.printf(" %2d", ary2[i]);
    }

或做类似的事情(不是我的首选)

    for(int i = 0; i < ary2.length; i++)
    {
        System.out.printf("%s%2d", (i == 0 ? "" : " "), ary2[i]);
    }