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

32,543

Solution 1

Use StringUtils.center from the Commons Lang library:

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

Solution 2

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");
Share:
32,543
Khan
Author by

Khan

Updated on June 13, 2021

Comments

  • Khan
    Khan almost 3 years

    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?