使用String.format在特定位置放置不同大小的对象

时间:2010-07-11 01:17:55

标签: java string.format

我有一堆数据需要美化和输出。我正在使用的当前代码是:

String.format("%1s" + "%7d" + "%17d" + "%18d" + "\n", string, int, int, int);

我的第一个文件的结果输出是:

2006-09-16 09:00:01      1                0               501
2006-09-16 08:15:00      0                4               401
2006-09-15 07:05:15      0                3               301

字符串始终是那个长度,但问题在于接下来的两个整数,因为它们的长度可以是1或2。

当我使用我的其他文件时,我得到:

2006-09-29 00:01:01     36               19               600
2006-09-30 21:00:00     9               33               599
2006-09-28 05:16:00     15               6               599

后两行向左移动1个空格。是否有可能使它无论整数的长度如何,它们总是出现在相同的位置,消除了发生的移位因子?

1 个答案:

答案 0 :(得分:0)

在Eclipse中尝试了这段代码:

public class StringFormatting
{
    public static void main(String[] args) 
    {         
         System.out.println(String.format("%1s" + "%7d" + "%17d" + "%18d" + "\n", "2006-09-29 00:01:01", 36, 19, 600));
         System.out.println(String.format("%1s" + "%7d" + "%17d" + "%18d" + "\n", "2006-09-30 21:00:00", 9, 33, 599));
         System.out.println(String.format("%1s" + "%7d" + "%17d" + "%18d" + "\n", "2006-09-29 00:01:01", 15, 6, 600));
         System.out.println(String.format("%1s" + "%7d" + "%17d" + "%18d" + "\n", "2006-09-29 00:01:01", 36, 19, 600));
    }
}

我得到了正确的对齐格式化输出:

2006-09-29 00:01:01     36               19               600

2006-09-30 21:00:00      9               33               599

2006-09-29 00:01:01     15                6               600

2006-09-29 00:01:01     36               19               600

也许这是Eclipse控制台窗口,它在这里做得很好。打败我...