Khan
Khan

Reputation: 2982

How to center string output using printf() and variable width?

I'm creating an output in Java using printf() to create table headers. One of the columns needs variable width.

Basically it should look like this:

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

I tried to use:

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

But I keep getting output errors when I try to use * or ^ in the conversion statement.

Does anyone have any idea what the correct formatting string should be?

Upvotes: 4

Views: 37472

Answers (2)

Behrang Saeedzadeh
Behrang Saeedzadeh

Reputation: 47913

Use StringUtils.center from the Commons Lang library:

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

Upvotes: 6

Brett Kail
Brett Kail

Reputation: 33936

Java does not support the "*" format specifier. Instead, insert the width directly into the format string:

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

Upvotes: 3

Related Questions