28
This presentation is the property of its rightful owner.
Sponsored Links
1 / 48

Formatted Output PowerPoint PPT Presentation


  • 58 Views
  • Uploaded on
  • Presentation posted in: General

28. Formatted Output. 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.

Download Presentation

Formatted Output

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Formatted output

28

  • Formatted Output


Objectives

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.


Formatted output

  • 28.1   Introduction

  • 28.2   Streams

  • 28.3   Formatting Output with printf

  • 28.4   Printing Integers

  • 28.5   Printing Floating-Point Numbers

  • 28.6   Printing Strings and Characters

  • 28.7   Printing Dates and Times

  • 28.8   Other Conversion Characters

  • 28.9   Printing with Field Widths and Precisions

  • 28.10   Using Flags in the printf Format String

  • 28.11   Printing with Argument Indices

  • 28.12   Printing Literals and Escape Sequences

  • 28.13   Formatting Output with Class Formatter

  • 28.14   Wrap-Up


28 1 introduction

28.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


28 2 streams

28.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


28 3 formatting output with printf

28.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


28 3 formatting output with printf cont

28.3  Formatting Output with printf (Cont.)

  • 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


28 4 printing integers

28.4  Printing Integers

  • Integer

    • Whole number (no decimal point): 25, 0, -9

    • Positive, negative, or zero

    • Only minus sign prints by default (later we shall change this)

  • Format

    • printf(format-string, argument-list);

    • format-string

      • Describe the output format

    • argument-list

      • Contain the value corresponding to each format specifier


Fig 28 1 integer conversion characters

Fig. 28.1 | Integer conversion characters.


Outline

Output the integer in octal format

Output positive and negative integers

Output the integer in hexadecimal format

Output the integer in hexadecimal format with capital letters

Outline

  • IntegerConversionTest.java

  • Lines 8-10

  • Line 11

  • Line 12

  • Line 13

  • Program output


28 5 printing floating point numbers

28.5  Printing Floating-Point Numbers

  • 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 107


Fig 28 3 floating point conversion characters

Fig. 28.3 | Floating-point conversion characters.


Outline1

Output positive and negative floating-point numbers using the e conversion character

Output floating-point number with uppercase E preceding the exponent

Output floating-point number using the f conversion character

Output floating-point number using the g and G conversion character

Outline

  • FloatingNumberTest.java

  • Lines 8-10

  • Line 11

  • Line 12

  • Lines 13-14

  • Program output


28 6 printing strings and characters

28.6  Printing Strings and Characters

  • Conversion character c and C

    • Require char

    • C displays the output in uppercase letters

  • Conversion character s and S

    • String

    • Object

      • Implicitly use object’s toString method

    • S displays the output in uppercase letters


Common programming error 28 1

Common Programming Error 28.1

  • Using %c to print a string causes an IllegalFormatConversionException—a string cannot be converted to a character.


Outline2

Display character with conversion character c

Display string with conversion character s

Display string with conversion characters s and S

Display Integer object with conversion characters s

Outline

  • CharStringConversion.java

  • Line 12

  • Line 13

  • Lines 14-15

  • Line 16

  • Program output


28 7 printing dates and times

28.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


Fig 28 6 date and time composition conversion suffix characters

Fig. 28.6 | Date and time composition conversion suffix characters.


Fig 28 7 date formatting conversion suffix characters

Fig. 28.7 | Date formatting conversion suffix characters.


Fig 28 8 time formatting conversion suffix characters

Fig. 28.8 | Time formatting conversion suffix characters.


Outline3

Obtain a Calendar with the current date and time

Use the Calendar object in printf statements as the value to be formatted with conversion character t

Use the optional argument index to indicate that all format specifiers in the format string use the first argument

Outline

  • DateTimeTest.java

    • (1 of 2)

    • Line 10

    • Lines 13-17

    • Lines 20-22


Outline4

Outline

  • DateTimeTest.java

    • (2 of 2)

    • Program output


28 8 other conversion characters

28.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


Common programming error 28 2

Common Programming Error 28.2

  • Trying to print a literal percent character using % rather than %% in the format string might cause a difficult-to-detect logic error. When % appears in a format string, it must be followed by a conversion character in the string. The single percent could accidentally be followed by a legitimate conversion character, thus causing a logic error.


Fig 28 10 other conversion specifiers

Fig. 28.10 | Other conversion specifiers.


Outline5

Print the value of boolean values false and true

Associate a String and a null object to %b and %B

Print null in uppercase letters

Print the string representations of the hash code values for strings “hello” and “Hello”

Print the % character in a string and a platform-specific line separator

Outline

  • OtherConversion.java

  • Lines 9-10

  • Lines 11-12

  • Lines 13-14

  • Line 15

  • Lines 16-17

  • Program output


28 9 printing with field widths and precisions

28.9  Printing with Field Widths and Precisions

  • Field width

    • Size of field in which data is printed

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


28 9 printing with field widths and precisions cont

28.9  Printing with Field Widths and Precisions (Cont.)

  • 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


28 9 printing with field widths and precisions cont1

28.9  Printing with Field Widths and Precisions (Cont.)

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


Common programming error 28 3

Common Programming Error 28.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!


Outline6

Print positive numbers with field width

Print negative numbers with field width

Outline

  • FieldWidthTest.java

  • Lines 8-12

  • Lines 14-18

  • Program output


Outline7

Print same floating-point number with same precision but different conversion character

Print string with precision

Outline

  • PrecisionTest.java

  • Line 11

  • Line 14

  • Program output


28 10 using flags in the printf format string

28.10 Using Flags in the printf Format String

  • Flags

    • Supplement formatting capabilities

    • Place flag immediately to the right of percent sign

    • Several flags may be combined


Fig 28 14 format string flags

Fig. 28.14 | Format string flags.


Outline8

Right justify a string, an integer, a character and a floating-point number

left justify a string, an integer, a character and a floating-point number

Outline

  • MinusFlagTest.java

  • Line 10

  • Lines 11-12

  • Program output


Outline9

Print a positive number with a plus sign

Outline

  • PlusFlagTest.java

  • Line 9

  • Program output


Outline10

Prefix a space to the positive number with the space flag

Outline

  • SpaceFlagTest.java

  • Line 8

  • Program output


Outline11

Use the # flag to prefix 0 to the octal value and 0x to the hexadecimal value

Outline

  • PoundFlagTest.java

  • Lines 10-11

  • Program output


Outline12

Combine the + flag and the 0 flag print 452 in a field of width 9 with a + sign and leading zeros

Print 452 in a field of width 9 using only the 0 flag

Print 452 in a field of width 9 using only the space flag

Outline

  • ZeroFlagTest.java

  • Line 8

  • Line 9

  • Line 10

  • Program output


Outline13

Use the comma flag to display a decimal and a floating-point number with the thousands separator

Outline

  • CommaFlagTest.java

  • Lines 8-10

  • Program output


Outline14

Enclose negative numbers in parentheses using the ( flag

Outline

  • ParenthesesFlagTest.java

  • Lines 8-10

  • Program output


28 11 printing with argument indices

28.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


Outline15

Print arguments in the argument list in reverse order using the argument index

Outline

  • ArgumentIndexTest

  • Lines 11-13

  • Program output


28 12 printing literals and escape sequences

28.12 Printing Literals and Escape Sequences

  • 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


Common programming error 28 4

Common Programming Error 28.4

  • Attempting to print as literal data in a printf statement a double quote or backslash character without preceding that character with a backslash to form a proper escape sequence might result in a syntax error.


Fig 28 23 escape sequences

Fig. 28.23 | Escape sequences.


28 13 formatting output with class formatter

28.13 Formatting Output with Class Formatter

  • 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

  • Stringstatic method format

    • Create a string in memory without Formatter


Outline16

Create a Formatter object using the default constructor, which will build a string in memory

Invoke method format to format the output

Invoke Formatter’s toString method to get the formatted data as a string

Outline

  • FormatterTest.java

  • Line 11

  • Line 12

  • Line 15

  • Program output


  • Login