user1781482 user1781482 - 1 month ago 7x
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]);


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


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]);


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