javastringformattingprintf

Java printf using variable field size?


I'm just trying to convert some C code over to Java and I'm having a little trouble with String.printf.

In C, to get a specific width based on a variable, I can use:

printf("Current index = %*d\n", sz, index);

and it will format the integer to be a specific size based on sz.

Trying:

System.out.println(String.format("Current index = %*d\n", sz, index));

results in an error since it doesn't like the *.

I currently have the following kludge:

System.out.println(String.format("Current index = %" + sz + "d\n", index));

but I'm hoping there's a slightly better way, yes?


Solution

  • Declare an extra variable before using printf:

    String format = "%" + fieldSize + "d";
    System.out.printf(format, yourVariables);
    

    (this is the first solution I found from a web search)