Formatting Output
Formatting features of printf System.out.printf can perform the following
Rounding floating-point values
Aligning properly a column of output values
Right and left-justification of output
Representing Floating-point values in exponential format And integers in Octal and Hexadecimal format
Displaying Data with fixed-size and precisions Dates and times in different formats
Printing Integers
Conversion Character Description
d Display a decimal (base 10) integer.
o Display an octal (base 8) integer.
x or X Display a base 16 integer.
Printing Floating-Point Numbers
Conversion Character Description
e or E a floating-point value in exponential notation.
f Display a floating-point value in decimal format.
g or G Display a floating-point value in either the floating-point format f or the exponential format e based on the magnitude of the value. If the magnitude is less than 10–3, or greater than or equal to 107, the floating-point value is printed with e (or E). Otherwise, the value is printed in format f.
a or A Display a floating-point number in hexadecimal format.
Printing Strings and Characters
Conversion Character Description
c or C Display a char.
s or S Display a String or any Object
Printing Dates and TimesConversion Suffix Character Description
c Display date and time formatted as:day month date hour:minute:second time-zone year
F Display date formatted as year-month-date with four digits for the year and two digits each for the month and date (e.g., 2004-05-04).
D Display date formatted as month/day/year with two digits each for the month, day and year (e.g., 03/03/04).
r Display time in 12-hour format as hour:minute:second AM|PM with two digits each for the hour, minute and second (e.g., 04:30:25 PM).
R Display time formatted as hour:minute with two digits each for the hour and minute (e.g., 16:30). The 24-hour clock is used.
T Display time as hour:minute:second with two digits for the hour, minute and second (e.g., 16:30:25). The 24-hour clock is used.
Printing Dates and Times (cont’d)Conversion Suffix Character Description
A Display full name of the day of the week (e.g., Wednesday).
a Display the three-character name of the day of the week (e.g., Wed).
B Display full name of the month (e.g., March).
b Display the three-character short name of the month (e.g., Mar).
d Display the day of the month with two digits, padding with leading zeros as necessary (e.g., 03).
T Display the month with two digits, padding with leading zeros as necessary (e.g., 07).
e Display the day of month without leading zeros (e.g., 3).
Y Display the year with four digits (e.g., 2004).
y Display the last two digits of the year with leading zeros (e.g., 04).
j Display the day of the year with three digits, padding with leading zeros as necessary (e.g., 016).
Printing Dates and Times (cont’d)Conversion Suffix Character Description
H Display hour in 24-hour clock with a leading zero as necessary (e.g., 16).
I Display hour in 12-hour clock with a leading zero as necessary (e.g., 04).
k Display hour in 24-hour clock without leading zeros (e.g., 16).
l Display hour in 12-hour clock without leading zeros (e.g., 4).
M Display minute with a leading zero as necessary (e.g., 06).
S Display second with a leading zero as necessary (e.g., 05).
Z Display the abbreviation for the time zone (e.g., EST or GMT).
p Display morning or afternoon marker in lowercase (e.g., pm).
P Display morning or afternoon marker in uppercase (e.g., PM).
Dates and Time Example
Other Conversion CharactersConversion Suffix Character Description
b or B Print "true" or "false" for the value of a boolean or Boolean. These conversion characters can also format the value of any reference. If the reference is non-null, "true" is output; otherwise, "false". When conversion character B is used, the output is displayed in uppercase letters.
h or H Print the string representation of an object’s hash-code value in hexadecimal format. If the corresponding argument is null, "null" is printed. When conversion character H is used, the output is displayed in uppercase letters.
% Print the percent character.
n Print the platform-specific line separator (e.g., \r\n on Windows or \n on UNIX/LINUX).
Other Conversion Characters Example
Printing with Field Widths and Precisions Size of a field
Specified by a field width value That is inserted between % and the conversion character
When Bigger than data => data is right justified Not present => data occupies as many positions as needed
Precision When used
with e and f => number of digits after decimal point with g, a, or A => number of significant digits to print with s => max number of characters to write from String
Field Width Example
Precision Example
Using Flags Conversion Suffix Character Description
- (minus sign) Left justify the output within the specified field.
+ (plus sign) Display a plus sign preceding positive values and a minus sign preceding negative values.
space Print a space before a positive value not printed with the + flag.
# Prefix 0 to the output value when used with the octal conversion character o. Prefix 0x to the output value when used with the hexadecimal conversion character x.
0 (zero) Pad a field with leading zeros.
, (comma) Use the locale-specific thousands separator (i.e., ',' for U.S. locale) to display decimal and floating-point numbers.
Flag Examples
Flag Examples (cont’d)
Flag Examples (cont’d)
Flag Examples (cont’d)
Printing with Argument Indices An argument index
Is an optional integer followed by a $ sign Indicating the argument’s position in the argument list
Example Argument index “1$” indicates that
Format specifier uses first argument
public class ArgumentIndexTest {public static void main( String[] args ) {System.out.printf("Parameter list without reordering: %s %s %s %s\n","first", "second", "third", "fourth" );System.out.printf(
"Parameter list after reordering: %4$s %3$s %2$s %1$s\n", "first", "second", "third", "fourth" );
} // end main} // end class ArgumentIndexTest
Formatter class Formatter
part of java.util package
allows sending formatted data to to a specified destination, such as a file or a disk
Example:import java.util.Formatter; import javax.swing.JOptionPane;public class FormatterTest {
public static void main( String[] args ){ Formatter formatter = new Formatter();
formatter.format(“%d=%#o=%#X”,10,10,10);JOptionPane.showMessageDialog( null, fromatter.toString());
} // end main} // end class FormatterTest;