如何使用printf()和可变宽度居中输出字符串? 【JAVA]

时间:2010-04-25 21:11:34

标签: java printf

我正在使用printf()在Java中创建输出来创建表头。其中一列需要可变宽度。

基本上它应该是这样的:

//two coords
Trial    Column Heading
1        (20,30)(30,20)
//three coords
Trial        Column Heading
1        (20,40)(50,10)(90,30)

我试图使用:

int spacing = numCoords * 7; //size of column
printf("Trial    %*^s", column, "Column Heading");

但是当我尝试在转换语句中使用*或^时,我一直收到输出错误。

有没有人知道正确的格式化字符串应该是什么?

3 个答案:

答案 0 :(得分:6)

使用Commons Lang library中的StringUtils.center:

StringUtils.center(column, "Column Heading".length());

答案 1 :(得分:3)

Java不支持“*”格式说明符。而是将宽度直接插入格式字符串:

int spacing = numCoords * 7; //size of column
System.out.printf("Trial    %" + spacing + "s", "Column Heading");

答案 2 :(得分:-1)

在Java中,使用System.out.println()

根据您的要求,您应该使用类似的东西,

System.out.println("Trial"+getSpacer(spacing)+"Column Heading");

这里的getSpacer(int spaces)会返回一个包含你想要的空格数的字符串。