Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Align printf output in Java

Tags:

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 
like image 244
user1781482 Avatar asked Apr 12 '13 00:04

user1781482


People also ask

How do you arrange output in Java?

The simplest way to properly space your output in Java is by adding manual spacing. For instance, to output three different integers, "i," "j" and "k," with a space between each integer, use the following code: System. out.

What is %- 5d in Java?

"%5d" Format a string with the required number of integers and also pad with spaces to the left side if integers are not adequate. "%05d" Format a string with the required number of integers and also pad with zeroes to the left if integers are not adequate.

What is %d and %s in Java?

%s refers to a string data type, %f refers to a float data type, and %d refers to a double data type.


1 Answers

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.

like image 161
LionsDen Avatar answered Oct 05 '22 19:10

LionsDen