Search code examples
javaalignmentprintftext-align

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.

//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

Solution

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

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

    Formatting Numeric Print Output: https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

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