Formatted Output Pearson Education, Inc. All rights reserved.

Similar documents
C How to Program, 6/e by Pearson Education, Inc. All Rights Reserved.

Class Library java.util Package. Bok, Jong Soon

AWK - PRETTY PRINTING

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

INTRODUCTION TO C++ C FORMATTED INPUT/OUTPUT. Dept. of Electronic Engineering, NCHU. Original slides are from

printf("%c\n", character); printf("%s\n", "This is a string"); printf("%s\n", string); printf("%s\n",stringptr); return 0;

Assoc. Prof. Dr. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

12/22/11. Java How to Program, 9/e. Help you get started with Eclipse and NetBeans integrated development environments.

Unit 4. Input/Output Functions

Getting started with Java

Java Basic Datatypees

STUDENT LESSON A7 Simple I/O

CMPT 102 Introduction to Scientific Computer Programming. Input and Output. Your first program

Introduction to Computing Lecture 03: Basic input / output operations

Fundamentals of Programming

Fundamental of Programming (C)

Gabriel Hugh Elkaim Spring CMPE 013/L: C Programming. CMPE 013/L: C Programming

Università degli Studi di Bologna Facoltà di Ingegneria. Principles, Models, and Applications for Distributed Systems M

Full file at

Chapter 2 Elementary Programming

Visual C# Instructor s Manual Table of Contents

CSCI 2010 Principles of Computer Science. Data and Expressions 08/09/2013 CSCI

Muntaser Abulafi Yacoub Sabatin Omar Qaraeen. C Data Types

Fundamentals of Programming Session 4

Basics of Java Programming

DECLARATIONS. Character Set, Keywords, Identifiers, Constants, Variables. Designed by Parul Khurana, LIECA.

B.V. Patel Institute of BMC & IT, UTU 2014

Chapter 2 Primitive Data Types and Operations. Objectives

Number Systems, Scalar Types, and Input and Output

Full file at

Chapter 2 ELEMENTARY PROGRAMMING

Should you know scanf and printf?

Chapter 2: Using Data

Data and Expressions. Outline. Data and Expressions 12/18/2010. Let's explore some other fundamental programming concepts. Chapter 2 focuses on:

Basic Elements of C. Staff Incharge: S.Sasirekha

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

Strings and Arrays. Hendrik Speleers

CMPT 125: Lecture 3 Data and Expressions

Datatypes, Variables, and Operations

Fundamentals of Programming Session 8

Standard 11. Lesson 9. Introduction to C++( Up to Operators) 2. List any two benefits of learning C++?(Any two points)

More on variables and methods

Programming for Engineers Introduction to C

Lecture Notes. System.out.println( Circle radius: + radius + area: + area); radius radius area area value

12/22/11. Java How to Program, 9/e. public must be stored in a file that has the same name as the class and ends with the.java file-name extension.

COMP6700/2140 Data and Types

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. Overview. Objectives. Teaching Tips. Quick Quizzes. Class Discussion Topics

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

Copyright 1999 by Deitel & Associates, Inc. All Rights Reserved.

CHAPTER 7 OBJECTS AND CLASSES

Chapter 2: Using Data

4 Programming Fundamentals. Introduction to Programming 1 1

Fundamentals of Programming. Lecture 3: Introduction to C Programming

Work relative to other classes

Program Fundamentals

Exercises Software Development I. 03 Data Representation. Data types, range of values, internal format, literals. October 22nd, 2014

Reserved Words and Identifiers

BIT Java Programming. Sem 1 Session 2011/12. Chapter 2 JAVA. basic

Introduction to Java Applications; Input/Output and Operators

Java enum, casts, and others (Select portions of Chapters 4 & 5)

VARIABLES AND CONSTANTS

Section 2.2 Your First Program in Java: Printing a Line of Text

CHAPTER 7 OBJECTS AND CLASSES

BASIC INPUT/OUTPUT. Fundamentals of Computer Science

Data Types and Variables in C language

Introduction to C# Applications

C Concepts - I/O. Lecture 19 COP 3014 Fall November 29, 2017

Fundamental of Programming (C)

Chapter 02: Using Data

Lecture 4. Console input/output operations. 1. I/O functions for characters 2. I/O functions for strings 3. I/O operations with data formatting

A variable is a name for a location in memory A variable must be declared

Advanced C Programming Topics

Java Identifiers. Java Language Essentials. Java Keywords. Java Applications have Class. Slide Set 2: Java Essentials. Copyright 2012 R.M.

Introduction to Python Programming

Primitive Types. Four integer types: Two floating-point types: One character type: One boolean type: byte short int (most common) long

TCL - STRINGS. Boolean value can be represented as 1, yes or true for true and 0, no, or false for false.

Introduction to Classes and Objects Pearson Education, Inc. All rights reserved.

Variables and Literals

Chapter 2: Data and Expressions

Assoc. Prof. Dr. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Variables, Constants, and Data Types

Time: 8:30-10:00 pm (Arrive at 8:15 pm) Location What to bring:

C Fundamentals & Formatted Input/Output. adopted from KNK C Programming : A Modern Approach

JAVA Programming Fundamentals

Chapter 2, Part I Introduction to C Programming

Fundamental Data Types. CSE 130: Introduction to Programming in C Stony Brook University

Simple Java Reference

Strings, Strings and characters, String class methods. JAVA Standard Edition

The C++ Language. Arizona State University 1

Chapter 2: Data and Expressions

Introduction to Classes and Objects

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Basic Types and Formatted I/O

Programming Language 2 (PL2)

Section 2.2 Your First Program in Java: Printing a Line of Text

Introduction to Classes and Objects Pearson Education, Inc. All rights reserved.

2.1. Chapter 2: Parts of a C++ Program. Parts of a C++ Program. Introduction to C++ Parts of a C++ Program

Chapter 2 Primitive Data Types and Operations

C: How to Program. Week /Mar/05

Java Notes. 10th ICSE. Saravanan Ganesh

Transcription:

1 29 Formatted Output

2 OBJECTIVES In this chapter you will learn: To understand input and output streams. To use printf formatting. To print with field widths and precisions. To use formatting flags in the printf format string. To print with an argument index. To output literals and escape sequences. To format output with class Formatter.

3 29.1 Introduction 29.2 Streams 29.3 Formatting Output with printf 29.4 Printing Integers 29.5 Printing Floating-Point Numbers 29.6 Printing Strings and Characters 29.7 Printing Dates and Times 29.8 Other Conversion Characters 29.9 Printing with Field Widths and Precisions 29.10 Using Flags in the printf Format String 29.11 Printing with Argument Indices 29.12 Printing Literals and Escape Sequences 29.13 Formatting Output with Class Formatter 29.14 Wrap-Up

4 29.1 Introduction Method printf Formats and outputs data to the standard output stream, System.out Class Formatter Formats and outputs data to a specified destination E.g., a string or a file output stream Use as an alternative to the printf method

5 29.2 Streams Streams Sequences of bytes Can often be redirected Standard input keyboard Standard output screen Standard error screen More in Chapters 14 and 24 System.in System.out System.err

6 29.3 Formatting Output with printf printf Precise output formatting Conversion specifications: flags, field widths, precisions, etc. Can perform rounding aligning columns right/left justification inserting literal characters exponential format octal and hexadecimal format fixed width and precision date and time format

29.3 Formatting Output with printf (Cont.) 7 Format String Describe the output format Consist of fixed text and format specifier Format specifier Placeholder for a value Specify the type of data to output Begins with a percent sign (%) and is followed by a conversion character E.g., %s, %d Optional formatting information Argument index, flags, field width, precision Specified between % and conversion character

8 29.4 Printing Integers Integer Whole number (no decimal point): 25, 0, -9 Positive, negative, or zero Only minus sign prints by default Format printf( format string, argument list ); format string Describes the output format argument list Contains the values that corresponding to the format specifiers

9 Conversion character d o x or X Description Display a decimal (base 10) integer. Display an octal (base 8) integer. Display a hexadecimal (base 16) integer. X causes the digits 0 9 and the letters A F to be displayed and x causes the digits 0 9 and a f to be displayed. Fig. 29.1 Integer conversion characters.

10 1 // Fig. 29.2: IntegerConversionTest.java 2 // Using the integral conversion characters. 3 4 public class IntegerConversionTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%d\n", 26 ); 9 System.out.printf( "%d\n", +26 ); 10 System.out.printf( "%d\n", -26 ); 11 System.out.printf( "%o\n", 26 ); //octal format 12 System.out.printf( "%x\n", 26 ); //hexadecimal (lowercase) 13 System.out.printf( "%X\n", 26 ); //hexadecimal (uppercase) 14 } // end main 15 } // end class IntegerConversionTest 26 26-26 32 1a 1A

29.5 Printing Floating Point Numbers 11 Floating Point Numbers Have a decimal point (33.5) Computerized scientific notation (exponential notation) 150.4582 is 1.504582 x 10² in scientific 150.4582 is 1.504582e+02 in exponential (e stands for exponent) use e or E f print floating point with at least one digit to left of decimal g (or G) prints in f or e (E) Use exponential if the magnitude is less than 10 3, or greater than or equal to 10 7

12 Conversion character e or E F g or G Description Display a floating point value in exponential notation. When conversion character E is used, the output is displayed in uppercase letters. Display a floating point value in decimal format. 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 10 7, the floating point value is printed with e (or E). Otherwise, the value is printed in format f. When conversion character G is used, the output is displayed in uppercase letters. a or A Display a floating point number in hexadecimal format. When conversion character A is used, the output is displayed in uppercase letters. Fig. 29.3 Floating-point conversion characters.

13 1 // Fig. 29.4: FloatingNumberTest.java 2 // Using floating-point conversion characters. 3 4 public class FloatingNumberTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%e\n", 12345678.9 ); 9 System.out.printf( "%e\n", +12345678.9 ); 10 System.out.printf( "%e\n", -12345678.9 ); 11 System.out.printf( "%E\n", 12345678.9 ); 12 System.out.printf( "%f\n", 12345678.9 ); 13 System.out.printf( "%g\n", 12345678.9 ); 14 System.out.printf( "%G\n", 12345678.9 ); 15 } // end main 16 } // end class FloatingNumberTest 1.234568e+07 1.234568e+07-1.234568e+07 1.234568E+07 12345678.900000 1.23457e+07 1.23457E+07

14 29.6 Printing Strings and Characters Strings are objects, characters (type char) are a primitive data type in Java Conversion character c and C Require char C (capital C) displays the output in uppercase letters Conversion character s and S String Object Implicit use of object s tostring method S (capital S) displays the output in uppercase letters

15 Common Programming Error 29.1 Using %c to print a string causes an IllegalFormatConversionException A string cannot be converted to a character.

1 // Fig. 29.5: CharStringConversion.java 2 // Using character and string conversion characters. 3 4 public class CharStringConversion 5 { 6 public static void main( String args[] ) 7 { 8 char character = 'A'; // initialize char 9 String string = "This is also a string"; // String object 10 Integer integer = 1234; // initialize integer (autoboxing) 11 12 System.out.printf( "%c\n", character ); 13 System.out.printf( "%s\n", "This is a string" ); 14 System.out.printf( "%s\n", string ); 15 System.out.printf( "%S\n", string ); 16 System.out.printf( "%s\n", integer ); // implicit call to tostring 17 } // end main 18 } // end class CharStringConversion 16 A This is a string This is also a string THIS IS ALSO A STRING 1234

17 29.7 Printing Dates and Times Conversion characters t and T Print dates and times in various formats Followed by a conversion suffix character Require the corresponding argument to be of type long, Long, Calendar or Date Conversion suffix characters Specify the date and/or time format Format date and time compositions Format date Format time

18 Conversion suffix character c Description Display date and time formatted as day month date hour:minute:second time zone year with three characters for day and month, two digits for date, hour, minute and second and four digits for year for example, Wed Mar 03 16:30:25 GMT 05:00 2004. The 24 hour clock is used. In this example, GMT 05:00 is the time zone. F D r R T Display date formatted as year month date with four digits for the year and two digits each for the month and the date (e.g., 2004 05 04). Display date formatted as month/day/year with two digits each for the month, day and year (e.g., 03/03/04). Display time formatted as hour:minute:second AM PM with two digits each for the hour, minute and second (e.g., 04:30:25 PM). The 12 hour clock is used. 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. Display time formatted as hour:minute:second with two digits for the hour, minute and second (e.g., 16:30:25). The 24 hour clock is used. Fig. 29.6 Date and time composition conversion suffix characters.

19 Conversion suffix character A a Description Display full name of the day of the week (e.g., Wednesday). Display the three character short name of the day of the week (e.g., Wed). B b Display full name of the month (e.g., March). Display the three character short name of the month (e.g., Mar). d m Display the day of the month with two digits, padding with leading zeros as necessary (e.g., 03). 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 as necessary (e.g., 04). j Display the day of the year with three digits, padding with leading zeros as necessary (e.g., 016). Fig. 29.7 Date formatting conversion suffix characters.

20 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 P p Display the abbreviation for the time zone (e.g., GMT 05:00, stands for Eastern Standard Time, which is 5 hours behind Greenwich Mean Time). Display morning or afternoon marker in lower case (e.g., pm). Display morning or afternoon marker in upper case (e.g., PM). Fig. 29.8 Time formatting conversion suffix characters.

21 1 // Fig. 29.9: DateTimeTest.java 2 // Formatting dates and times with conversion character t and T. 3 import java.util.calendar; 4 5 public class DateTimeTest 6 { 7 public static void main( String args[] ) 8 { 9 // get current date and time 10 Calendar datetime = Calendar.getInstance(); 11 12 // printing with conversion characters for date/time compositions 13 System.out.printf( "%tc\n", datetime ); 14 System.out.printf( "%tf\n", datetime ); 15 System.out.printf( "%td\n", datetime ); 16 System.out.printf( "%tr\n", datetime ); 17 System.out.printf( "%tt\n", datetime ); 18 19 // printing with conversion characters for date 20 System.out.printf( "%1$tA, %1$tB %1$td, %1$tY\n", datetime ); 21 System.out.printf( "%1$TA, %1$TB %1$Td, %1$TY\n", datetime ); 22 System.out.printf( "%1$ta, %1$tb %1$te, %1$ty\n", datetime ); 23

22 24 // printing with conversion characters for time 25 System.out.printf( "%1$tH:%1$tM:%1$tS\n", datetime ); 26 System.out.printf( "%1$tZ %1$tI:%1$tM:%1$tS %tp", datetime ); 27 } // end main 28 } // end class DateTimeTest Tue Jun 29 11:17:21 GMT-05:00 2004 2004-06-29 06/29/04 11:17:21 AM 11:17:21 Tuesday, June 29, 2004 TUESDAY, JUNE 29, 2004 Tue, Jun 29, 04 11:17:21 GMT-05:00 11:17:21 AM

23 29.8 Other Conversion Characters Remaining conversion characters b or B boolean or Boolean value h or H String representation of an object s hash code in hexadecimal format % Percent character ( %% ) n Platform specific line separator \r\n on Windows \n on UNIX\Linux

24 Conversion character b or B h or H Description 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" is output. When conversion character B is used, the output is displayed in uppercase letters. Print the string representation of an object s hash code value in hexadecimal format. If the corresponding argument is a null reference, "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). Fig. 29.10 Other conversion specifiers.

25 1 // Fig. 29.11: OtherConversion.java 2 // Using the b, B, h, H, % and n conversion characters. 3 4 public class OtherConversion 5 { 6 public static void main( String args[] ) 7 { 8 Object test = null; 9 System.out.printf( "%b\n", false ); 10 System.out.printf( "%b\n", true ); 11 System.out.printf( "%b\n", "Test" ); 12 System.out.printf( "%B\n", test ); 13 System.out.printf( "Hashcode of \"hello\" is %h\n", "hello" ); 14 System.out.printf( "Hashcode of \"Hello\" is %h\n", "Hello" ); 15 System.out.printf( "Hashcode of null is %H\n", test ); 16 System.out.printf( "Printing a %% in a format string\n" ); 17 System.out.printf( "Printing a new line %nnext line starts here" ); 18 } // end main 19 } // end class OtherConversion false true true FALSE Hashcode of "hello" is 5e918d2 Hashcode of "Hello" is 42628b2 Hashcode of null is NULL Printing a % in a format string Printing a new line next line starts here

29.9 Printing with Field Widths and Precisions 26 Field width Size of field in which data is displayed If width larger than data, default right justified If field width too small, increases to fit data Minus sign uses one character position in field Integer width inserted between % and conversion specifier E.g., %4d field width of 4 Can be used with all format specifiers except the line separator (%n)

29.9 Printing with Field Widths and Precisions (Cont.) 27 Precision Meaning varies depending on data type: Floating point Number of digits to appear after decimal (e or E and f) Maximum number of significant digits (g or G) Strings Maximum number of characters to be written from string Format Use a dot (.) then precision number after % e.g., %.3f

29.9 Printing with Field Widths and Precisions (Cont.) 28 Field width and precision Can both be specified %width.precision %5.3f Negative field width left justified Positive field width right justified Precision must be positive Example: printf( "%9.3f", 123.456789 );

29 Common Programming Error 29.3 Not providing a sufficiently large field width to handle a value to be printed can off set other data being printed and produce confusing outputs. Know your data!

1 // Fig. 29.12: FieldWidthTest.java 2 // Right justifying integers in fields. 3 4 public class FieldWidthTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%4d\n", 1 ); 9 System.out.printf( "%4d\n", 12 ); 10 System.out.printf( "%4d\n", 123 ); 11 System.out.printf( "%4d\n", 1234 ); 12 System.out.printf( "%4d\n\n", 12345 ); // data too large 13 14 System.out.printf( "%4d\n", -1 ); 15 System.out.printf( "%4d\n", -12 ); 16 System.out.printf( "%4d\n", -123 ); 17 System.out.printf( "%4d\n", -1234 ); // data too large 18 System.out.printf( "%4d\n", -12345 ); // data too large 19 } // end main 20 } // end class RightJustifyTest 30 1 12 123 1234 12345-1 -12-123 -1234-12345

31 1 // Fig. 29.13: PrecisionTest.java 2 // Using precision for floating-point numbers and strings. 3 public class PrecisionTest 4 { 5 public static void main( String args[] ) 6 { 7 double f = 123.94536; 8 String s = "Happy Birthday"; 9 10 System.out.printf( "Using precision for floating-point numbers\n" ); 11 System.out.printf( "\t%.3f\n\t%.3e\n\t%.3g\n\n", f, f, f ); 12 13 System.out.printf( "Using precision for strings\n" ); 14 System.out.printf( "\t%.11s\n", s ); 15 } // end main 16 } // end class PrecisionTest Using precision for floating-point numbers 123.945 1.239e+02 124 Using precision for strings Happy Birth

29.10 Using Flags in the printf Format String 32 Flags Supplement formatting capabilities Place flag immediately to the right of percent sign Several flags may be combined

33 Flag 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. ( Enclose negative numbers in parentheses. Fig. 29.14 Format string flags.

34 1 // Fig. 28.15: MinusFlagTest.java 2 // Right justifying and left justifying values. 3 4 public class MinusFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.println( "Columns:" ); 9 System.out.println( "0123456789012345678901234567890123456789\n" ); 10 System.out.printf( "%10s%10d%10c%10f\n\n", "hello", 7, 'a', 1.23 ); 11 System.out.printf( 12 "%-10s%-10d%-10c%-10f\n", "hello", 7, 'a', 1.23 ); 13 } // end main 14 } // end class MinusFlagTest Columns: 0123456789012345678901234567890123456789 hello 7 a 1.230000 hello 7 a 1.230000

35 1 // Fig. 29.16: PlusFlagTest.java 2 // Printing numbers with and without the + flag. 3 4 public class PlusFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%d\t%d\n", 786, -786 ); 9 System.out.printf( "%+d\t%+d\n", 786, -786 ); 10 } // end main 11 } // end class PlusFlagTest 786-786 +786-786

36 1 // Fig. 29.17: SpaceFlagTest.java 2 // Printing a space before non-negative values. 3 4 public class SpaceFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "% d\n% d\n", 547, -547 ); 9 } // end main 10 } // end class SpaceFlagTest 547-547

37 1 // Fig. 29.18: PoundFlagTest.java 2 // Using the # flag with conversion characters o and x. 3 4 public class PoundFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 int c = 31; // initialize c 9 10 System.out.printf( "%#o\n", c ); 11 System.out.printf( "%#x\n", c ); 12 } // end main 13 } // end class PoundFlagTest Use the # flag to prefix 0 to the octal value and 0x to the hexadecimal value 037 0x1f

38 1 // Fig. 29.19: ZeroFlagTest.java 2 // Printing with the 0 (zero) flag fills in leading zeros. 3 4 public class ZeroFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%+09d\n", 452 ); 9 System.out.printf( "%09d\n", 452 ); 10 System.out.printf( "% 9d\n", 452 ); 11 } // end main 12 } // end class ZeroFlagTest +00000452 000000452 452

39 1 // Fig. 29.20: CommaFlagTest.java 2 // Using the comma (,) flag to display numbers with thousands separator. 3 4 public class CommaFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%,d\n", 58625 ); 9 System.out.printf( "%,.2f", 58625.21 ); 10 System.out.printf( "%,.2f", 12345678.9 ); 11 } // end main 12 } // end class CommaFlagTest 58,625 58,625.21 12,345,678.90

40 1 // Fig. 29.21: ParenthesesFlagTest.java 2 // Using the ( flag to place parentheses around negative numbers. 3 4 public class ParenthesesFlagTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( "%(d\n", 50 ); 9 System.out.printf( "%(d\n", -50 ); 10 System.out.printf( "%(.1e\n", -50.0 ); 11 } // end main 12 } // end class ParenthesesFlagTest 50 (50) (5.0e+01)

41 29.11 Printing with Argument Indices Argument index Optional decimal integer followed by a $ sign Indicate the position of the argument in the argument list E.g., 1$ first argument Usage Reorder the output Avoid duplicating arguments Reuse same argument multiple times

42 1 // Fig. 29.22: ArgumentIndexTest 2 // Reordering output with argument indices. 3 4 public class ArgumentIndexTest 5 { 6 public static void main( String args[] ) 7 { 8 System.out.printf( 9 "Parameter list without reordering: %s %s %s %s\n", 10 "first", "second", "third", "fourth" ); 11 System.out.printf( 12 "Parameter list after reordering: %4$s %3$s %2$s %1$s\n", 13 "first", "second", "third", "fourth" ); 14 } // end main 15 } // end class ArgumentIndexTest Parameter list without reordering: first second third fourth Parameter list after reordering: fourth third second first

29.12 Printing Literals and Escape Sequences 43 Printing Literals Most characters can be printed Certain "problem" characters, such as the quotation mark (") Must be represented by escape sequences Represented by a backslash \ followed by an escape character

44 Escape sequence \' (single quote) Description Output the single quote (') character. \" (double quote) Output the double quote (") character. \\ (backslash) Output the backslash (\) character. \b (backspace) Move the cursor back one position on the current line. \f (new page or form feed) Move the cursor to the start of the next logical page. \n (newline) Move the cursor to the beginning of the next line. \r (carriage return) Move the cursor to the beginning of the current line. \t (horizontal tab) Move the cursor to the next horizontal tab position. Fig. 29.23 Escape sequences.

29.13 Formatting Output with Class Formatter 45 Class Formatter Provides same formatting capabilities as printf Output formatted data to a specified destination E.g., a file on disk By default, Formatter creates a string in memory String static method format Create a string in memory without Formatter Build a formatted string and assign the reference to a String reference variable

46 1 // Fig. Fig. 29.24: FormatterTest.java 2 // Format string with class Formatter. 3 import java.util.formatter; 4 import javax.swing.joptionpane; 5 6 public class FormatterTest 7 { 8 public static void main( String args[] ) 9 { 10 // create Formatter and format output 11 Formatter formatter = new Formatter(); 12 formatter.format( "%d = %#o = %#X", 10, 10, 10 ); 13 14 // display output in JOptionPane 15 JOptionPane.showMessageDialog( null, formatter.tostring() ); 16 } // end main 17 } // end class FormatterTest