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

我正在使用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"); 

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

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

使用Commons Lang库中的 StringUtils.center:

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

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

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

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

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

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

这里的getSpacer(int spaces)将返回一个String,其中包含您想要的多个空格。