user1781482 user1781482 - 3 months ago 13
Java Question

Align printf output in Java

I need to display a list of items with their prices from an array and would like to align the prices. I almost have it working but needs improvements. Below is the code and the output. Any ideas how to make all prices aligned? So far some work but some don't. Thanks in advance.

//for loop
System.out.printf("%d. %s \t\t $%.2f\n",
i + 1, BOOK_TYPE[i], COST[i]);


output:

1. Newspaper $1.00
2. Paper Back $7.50
3. Hardcover book $10.00
4. Electronic book $2.00
5. Magazine $3.00

Answer

You can try the below example. Do use '-' before the width to ensure left indentation. By default they will be right indented; which may not suit your purpose.

System.out.printf("%2d. %-20s $%.2f\n",  i + 1, BOOK_TYPE[i], COST[i]);

Source: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

PS: This could go as a comment to DwB's answer, but i still don't have permissions to comment and so answering it.

Comments