Advanced Programming Language MSc. Nguyen Cao Dat [email protected].

139
Advanced Programming Language MSc. Nguyen Cao Dat [email protected]

Transcript of Advanced Programming Language MSc. Nguyen Cao Dat [email protected].

Page 1: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Advanced Programming Language

MSc. Nguyen Cao Dat

[email protected]

Page 2: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6

FUNDAMENTALS OF PROGRAMMING

Chapter I

2

Page 3: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6

Content

Introduction Primitive Data Types and Operations Control Statements Loop Statements Methods

3

Page 4: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 4

IntroductionWhy Java?

- Java is a general purpose programming language.

- Java is the Internet programming language.

- Java can be used to develop Web applications.

- Java can also be used to develop applications for hand-held devices such as Palm and cell phone

Page 5: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 5

Introduction

Examples of Java’s VersatilityStandalone Application: TicTacToe

Applet: TicTacToeServlets: SelfTest Web site Mobile Computing: Cell phones

Page 6: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 6

TicTacToe Standalone

Page 7: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 7

TicTacToe Applet

Page 8: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 8

SelfTest Website (using Java Servlets)

Page 9: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 9

PDA and Cell Phone

Page 10: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 10

Introduction Java’s History

– James Gosling and Sun Microsystems

– Oak

– Java, May 20, 1995, Sun World

– HotJava The first Java-enabled Web browser

– Early History Website:

http://java.sun.com/features/1998/05/birthday.html

Page 11: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 11

Introduction Characteristics of Java

– Java Is Simple – Java Is Object-Oriented – Java Is Distributed – Java Is Interpreted – Java Is Robust – Java Is Secure – Java Is Architecture-Neutral – Java Is Portable – Java Is Multithreaded – Java Is Dynamic

www.cs.armstrong.edu/liang/intro6e/JavaCharacteristics.pdf

Page 12: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 12

Introduction JDK(Java Development Kit) Versions

– JDK 1.02 (1995)– JDK 1.1 (1996)– JDK 1.2 (1998)– JDK 1.3 (2000)– JDK 1.4 (2002)– JDK 1.5 (2004) a. k. a. JDK 5 or Java 5

Page 13: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 13

Introduction JDK Editions

– Java Standard Edition (J2SE) J2SE can be used to develop client-side standalone

applications or applets.

– Java Enterprise Edition (J2EE) J2EE can be used to develop server-side applications

such as Java servlets and Java ServerPages.

– Java Micro Edition (J2ME). J2ME can be used to develop applications for mobile

devices such as cell phones.

This course uses J2SE to introduce Java programming.

Page 14: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 14

Introduction

//This program prints Welcome to Java! public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); }}

A Simple Java Program

Page 15: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 15

Creating, Compiling, and Running Programs

Source Code

Create/Modify Source Code

Compile Source Code i.e., javac Welcome.java

Bytecode

Run Byteode i.e., java Welcome

Result

If compilation errors

If runtime errors or incorrect result

public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); } }

… Method Welcome() 0 aload_0 … Method void main(java.lang.String[]) 0 getstatic #2 … 3 ldc #3 <String "Welcome to Java!"> 5 invokevirtual #4 … 8 return

Saved on the disk

stored on the disk

Source code (developed by the programmer)

Byte code (generated by the compiler for JVM to read and interpret, not for you to understand)

Page 16: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 16

Compiling and Running Java from the Command Window

Set path to JDK bin directory– set path=c:\Program Files\java\jdk1.5.0\bin

Set classpath to include the current directory– set classpath=.

Compile– javac Welcome.java

Run– java Welcome

Page 17: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 17

Introduction Anatomy of a Java Program

– Comments

– Package

– Reserved words

– Modifiers

– Statements

– Blocks

– Classes

– Methods

– The main method

Page 18: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 18

Comments

In Java, comments are preceded by two slashes (//) in a line, or enclosed between /* and */ in one or multiple lines. When the compiler sees //, it ignores all text after // in the same line. When it sees /*, it scans for the next */ and ignores any text between /* and */.

Page 19: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 19

Package

The second line in the program (package chapter1;) specifies a package name, chapter1, for the class Welcome. IDE compiles the source code in Welcome.java, generates Welcome.class, and stores Welcome.class in the chapter1 folder.

Page 20: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 20

Reserved Words

Reserved words or keywords are words that have a specific meaning to the compiler and cannot be used for other purposes in the program. For example, when the compiler sees the word class, it understands that the word after class is the name for the class. Other reserved words in Listing 1.1 are public, static, and void. Their use will be introduced later in the book.

Page 21: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 21

Modifiers

Java uses certain reserved words called modifiers that specify the properties of the data, methods, and classes and how they can be used. Examples of modifiers are public and static. Other modifiers are private, final, abstract, and protected. A public datum, method, or class can be accessed by other programs. A private datum or method cannot be accessed by other programs. Modifiers are discussed in Chapter 6, “Objects and Classes.”

Page 22: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 22

Classes

The class is the essential Java construct. A class is a template or blueprint for objects. To program in Java, you must understand classes and be able to write and use them. The mystery of the class will continue to be unveiled throughout this course. For now, though, understand that a program is defined by using one or more classes.

Page 23: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 23

MethodsWhat is System.out.println? It is a method: a collection of statements that performs a sequence of operations to display a message on the console. It can be used even without fully understanding the details of how it works. It is used by invoking a statement with a string argument. The string argument is enclosed within parentheses. In this case, the argument is "Welcome to Java!" You can call the same println method with a different argument to print a different message.

Page 24: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 24

main MethodThe main method provides the control of program flow. The Java interpreter executes the application by invoking the main method.

 

The main method looks like this:

 public static void main(String[] args) {

// Statements;

}

Page 25: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 25

Displaying Text in a Message Dialog Box

you can use the showMessageDialog method in the JOptionPane class. JOptionPane is one of the many predefined classes in the Java system, which can be reused rather than “reinventing the wheel.”

RunRun

SourceSourceIMPORTANT NOTE: To run the program from the Run button, (1) set c:\jdk1.5.0\bin for path, and (2) install slides from the Instructor Resource Website to a directory (e.g., c:\LiangIR) .

Page 26: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 26

The showMessageDialog Method

JOptionPane.showMessageDialog(null, "Welcome to Java!", “Display Message", JOptionPane.INFORMATION_MESSAGE));

Page 27: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 27

Identifiers An identifier is a sequence of characters that consist of

letters, digits, underscores (_), and dollar signs ($). An identifier must start with a letter, an underscore (_),

or a dollar sign ($). It cannot start with a digit. – An identifier cannot be a reserved word. (See Appendix A,

“Java Keywords,” for a list of reserved words).

An identifier cannot be true, false, ornull.

An identifier can be of any length.

Page 28: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 28

Variables

// Compute the first arearadius = 1.0;area = radius * radius * 3.14159;System.out.println("The area is “ + area + " for radius "+radius);

// Compute the second arearadius = 2.0;area = radius * radius * 3.14159;System.out.println("The area is “ + area + " for radius "+radius);

Page 29: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 29

Declaring Variablesint x; // Declare x to be an // integer variable;

double radius; // Declare radius to // be a double variable;

char a; // Declare a to be a // character variable;

Page 30: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 30

Assignment Statements

x = 1; // Assign 1 to x;

radius = 1.0; // Assign 1.0 to radius;

a = 'A'; // Assign 'A' to a;

Page 31: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 31

Declaring and Initializingin One Step

int x = 1;

double d = 1.4;

Page 32: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 32

Constants

final datatype CONSTANTNAME = VALUE;

final double PI = 3.14159;

final int SIZE = 3;

Page 33: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 33

Numerical Data Types

Name Range Storage Size

byte –27 (-128) to 27–1 (127) 8-bit signed

short –215 (-32768) to 215–1 (32767) 16-bit signed

int –231 (-2147483648) to 231–1 (2147483647) 32-bit signed

long –263 to 263–1 64-bit signed (i.e., -9223372036854775808 to 9223372036854775807)

float Negative range: 32-bit IEEE 754 -3.4028235E+38 to -1.4E-45 Positive range: 1.4E-45 to 3.4028235E+38

double Negative range: 64-bit IEEE 754 -1.7976931348623157E+308 to -4.9E-324 Positive range: 4.9E-324 to 1.7976931348623157E+308

Page 34: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 34

Numeric Operators

Name Meaning Example Result

+ Addition 34 + 1 35 - Subtraction 34.0 – 0.1 33.9 * Multiplication 300 * 30 9000 / Division 1.0 / 2.0 0.5 % Remainder 20 % 3 33.9

Page 35: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 35

Integer Division

+, -, *, /, and %

5 / 2 yields an integer 2.

5.0 / 2 yields a double value 2.5

5 % 2 yields 1 (the remainder of the division)

Page 36: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 36

Remainder OperatorRemainder is very useful in programming. For example, an even number % 2 is always 0 and an odd number % 2 is always 1. So you can use this property to determine whether a number is even or odd. Suppose today is Saturday and you and your friends are going to meet in 10 days. What day is in 10 days? You can find that day is Tuesday using the following expression:

Saturday is the 6th day in a week A week has 7 days

January has 31 days The 2nd day in a week is Tuesday

(6 + 31) % 7 is 2

Page 37: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 37

Scientific Notation

Floating-point literals can also be specified in scientific notation, for example, 1.23456e+2, same as 1.23456e2, is equivalent to 123.456, and 1.23456e-2 is equivalent to 0.0123456. E (or e) represents an exponent and it can be either in lowercase or uppercase.

Page 38: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 38

Arithmetic Expressions

)94

(9))(5(10

5

43

y

x

xx

cbayx

is translated to

(3+4*x)/5 – 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y)

Page 39: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 39

Example: Converting Temperatures

Write a program that converts a Fahrenheit degree to Celsius using the formula:

)32)(( 95 fahrenheitcelsius

Page 40: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 40

Shortcut Assignment Operators

Operator Example Equivalent

+= i += 8 i = i + 8

-= f -= 8.0 f = f - 8.0

*= i *= 8 i = i * 8

/= i /= 8 i = i / 8

%= i %= 8 i = i % 8

Page 41: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 41

Increment andDecrement Operators

Operator Name Description++var preincrement The expression (++var) increments var

by 1 and evaluates to the new value in var after the

increment.var++ postincrement The expression (var++) evaluates to the

original value in var and increments var by 1.

--var predecrement The expression (--var) decrements var by 1 and evaluates

to the new value in var after the decrement.

var-- postdecrement The expression (var--) evaluates to the original value

in var and decrements var by 1.

Page 42: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 42

Increment andDecrement Operators, cont.

int i = 10; int newNum = 10 * i++;

int newNum = 10 * i; i = i + 1;

Same effect as

int i = 10; int newNum = 10 * (++i);

i = i + 1; int newNum = 10 * i;

Same effect as

Page 43: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 43

Increment andDecrement Operators, cont.

Using increment and decrement operators makes expressions short, but it also makes them complex and difficult to read. Avoid using these operators in expressions that modify multiple variables, or the same variable for multiple times

Such as this: int k = ++i + i.

Page 44: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 44

Assignment Expressions and Assignment Statements

Prior to Java 2, all the expressions can be used as statements. Since Java 2, only the following types of expressions can be statements:

variable op= expression; // Where op is +, -, *, /, or %

++variable;

variable++;

--variable;

variable--;

Page 45: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 45

Numeric Type Conversion

Consider the following statements:

byte i = 100;

long k = i * 3 + 4;

double d = i * 3.1 + k / 2;

Page 46: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 46

Conversion RulesWhen performing a binary operation involving two operands of different types, Java automatically converts the operand based on the following rules:

 1.    If one of the operands is double, the other is

converted into double.2.    Otherwise, if one of the operands is float, the other is

converted into float.3.    Otherwise, if one of the operands is long, the other is

converted into long.4.    Otherwise, both operands are converted into int.

Page 47: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 47

Type CastingImplicit casting double d = 3; (type widening)

Explicit casting int i = (int)3.0; (type narrowing) int i = (int)3.9; (Fraction part is truncated)

What is wrong? int x = 5 / 2.0;

byte, short, int, long, float, double

range increases

Page 48: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 48

Character Data Type

char letter = 'A'; (ASCII)

char numChar = '4'; (ASCII)

char letter = '\u0041'; (Unicode)

char numChar = '\u0034'; (Unicode)

Four hexadecimal digits.

NOTE: The increment and decrement operators can also be used on char variables to get the next or preceding Unicode character. For example, the following statements display character b

char ch = 'a';

System.out.println(++ch);

Page 49: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 49

Unicode FormatJava characters use Unicode, a 16-bit encoding scheme established by the Unicode Consortium to support the interchange, processing, and display of written texts in the world’s diverse languages. Unicode takes two bytes, preceded by \u, expressed in four hexadecimal numbers that run from '\u0000' to '\uFFFF'. So, Unicode can represent 65535 + 1 characters.

Unicode \u03b1 \u03b2 \u03b3 for three Greek letters

Page 50: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 50

Example: Displaying Unicodes

Write a program that displays two Chinese characters and three Greek letters.

DisplayUnicodeDisplayUnicode RunRun

Page 51: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 51

Escape Sequences for Special Characters

Description Escape Sequence Unicode

Backspace \b \u0008

Tab \t \u0009

Linefeed \n \u000A

Carriage return \r \u000D

Backslash \\ \u005C

Single Quote \' \u0027

Double Quote \" \u0022

Page 52: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 52

Appendix B: ASCII Character SetASCII Character Set is a subset of the Unicode from \u0000 to \u007f

Page 53: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 53

ASCII Character Set, cont.ASCII Character Set is a subset of the Unicode from \u0000 to \u007f

Page 54: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 54

Casting between char and Numeric Types

int i = 'a'; // Same as int i = (int)'a';

char c = 97; // Same as char c = (char)97;

Page 55: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 55

The String Type The char type only represents one character. To represent a string of characters, use the data type called String. For example,  String message = "Welcome to Java"; String is actually a predefined class in the Java library just like the System class and JOptionPane class. The String type is not a primitive type. It is known as a reference type. Any Java class can be used as a reference type for a variable. Reference data types will be thoroughly discussed in Chapter 6, “Classes and Objects.” For the time being, you just need to know how to declare a String variable, how to assign a string to the variable, and how to concatenate strings.

Page 56: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 56

String Concatenation // Three strings are concatenatedString message = "Welcome " + "to " + "Java"; // String Chapter is concatenated with number 2String s = "Chapter" + 2; // s becomes Chapter2 // String Supplement is concatenated with character BString s1 = "Supplement" + 'B'; // s becomes SupplementB

Page 57: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 57

Obtaining Input1. Using JOptionPane input dialogs

2. Using Scanner class

Page 58: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 58

Getting Input from Input Dialog Boxes

String string = JOptionPane.showInputDialog(

null, “Prompting Message”, “Dialog Title”,

JOptionPane.QUESTION_MESSAGE));

Page 59: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 59

Two Ways to Invoke the Method There are several ways to use the showInputDialog method. For the time being, you only need to know two ways to invoke it.One is to use a statement as shown in the example:

String string = JOptionPane.showInputDialog(null, x, y, JOptionPane.QUESTION_MESSAGE));

where x is a string for the prompting message, and y is a string for the title of the input dialog box.

The other is to use a statement like this:JOptionPane.showInputDialog(x);

where x is a string for the prompting message.

Page 60: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 60

Converting Strings to Integers

The input returned from the input dialog box is a string. If you enter a numeric value such as 123, it returns “123”. To obtain the input as a number, you have to convert a string into a number.  To convert a string into an int value, you can use the static parseInt method in the Integer class as follows: int intValue = Integer.parseInt(intString); where intString is a numeric string such as “123”.

Page 61: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 61

Converting Strings to Doubles

To convert a string into a double value, you can use the static parseDouble method in the Double class as follows:

 

double doubleValue =Double.parseDouble(doubleString);

 

where doubleString is a numeric string such as “123.45”.

Page 62: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 62

Example: Computing Loan Payments

ComputeLoanComputeLoan RunRun

This program lets the user enter the interest rate, number of years, and loan amount and computes monthly payment and total payment.

12)1(11

arsnumberOfYeerestRatemonthlyInt

erestRatemonthlyIntloanAmount

Page 63: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 63

Example: Monetary Units

This program lets the user enter the amount in decimal representing dollars and cents and output a report listing the monetary equivalent in single dollars, quarters, dimes, nickels, and pennies. Your program should report maximum number of dollars, then the maximum number of quarters, and so on, in this order.

ComputeChangeComputeChange RunRun

Page 64: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 64

Example: Displaying Current TimeWrite a program that displays current time in GMT in the format hour:minute:second such as 1:45:19.

The currentTimeMillis method in the System class returns the current time in milliseconds since the midnight, January 1, 1970 GMT. (1970 was the year when the Unix operating system was formally introduced.) You can use this method to obtain the current time, and then compute the current second, minute, and hour as follows.

ShowCurrentTimeShowCurrentTime

RunRun

Elapsed time

Unix Epoch 01-01-1970

00:00:00 GMT

Current Time

Time

System.CurrentTimeMills()

Page 65: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 65

Getting Input Using Scanner1. Create a Scanner object

Scanner scanner = new Scanner(System.in);

2. Use the methods next(), nextByte(), nextShort(), nextInt(), nextLong(), nextFloat(), nextDouble(), or nextBoolean() to obtain to a string, byte, short, int, long, float, double, or boolean value. For example,

System.out.print("Enter a double value: ");Scanner scanner = new Scanner(System.in);double d = scanner.nextDouble();

TestScannerTestScanner RunRun

Page 66: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 66

Programming Style and Documentation

Appropriate Comments Naming Conventions Proper Indentation and Spacing

Lines Block Styles

Page 67: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 67

Appropriate Comments

Include a summary at the beginning of the program to explain what the program does, its key features, its supporting data structures, and any unique techniques it uses.

Include your name, class section, instructor, date, and a brief description at the beginning of the program.

Page 68: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 68

Naming Conventions

Choose meaningful and descriptive names.

Variables and method names– Use lowercase. If the name consists of several

words, concatenate all in one, use lowercase for the first word, and capitalize the first letter of each subsequent word in the name. For example, the variables radius and area, and the method computeArea.

Page 69: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 69

Naming Conventions, cont.

Class names: – Capitalize the first letter of each word in

the name. For example, the class name ComputeArea.

Constants: – Capitalize all letters in constants, and use

underscores to connect words. For example, the constant PI and MAX_VALUE

Page 70: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 70

Proper Indentation and Spacing

Indentation– Indent two spaces.

Spacing – Use blank line to separate segments of the code.

Page 71: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 71

Block Styles

Use end-of-line style for braces.

  public class Test { public static void main(String[] args) { System.out.println("Block Styles"); } }

public class Test { public static void main(String[] args) {

System.out.println("Block Styles"); } }

End-of-line style

Next-line style

Page 72: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 72

The boolean Type and Operators

Often in a program you need to compare two values, such as whether i is greater than j. Java provides six comparison operators (also known as relational operators) that can be used to compare two values. The result of the comparison is a Boolean value: true or false.

boolean b = (1 > 2);

Page 73: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 73

Comparison Operators

Operator Name

< less than

<= less than or equal to

> greater than

>= greater than or equal to

== equal to

!= not equal to

Page 74: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 74

Boolean Operators

Operator Name

! not

&& and

|| or

^ exclusive or

Page 75: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 75

Examples

System.out.println("Is " + num + " divisible by 2 and 3? " +

((num % 2 == 0) && (num % 3 == 0)));

  

System.out.println("Is " + num + " divisible by 2 or 3? " +

((num % 2 == 0) || (num % 3 == 0)));

 

System.out.println("Is " + num +

" divisible by 2 or 3, but not both? " +

((num % 2 == 0) ^ (num % 3 == 0)));

Page 76: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 76

Example: Determining Leap Year?

LeapYearLeapYear RunRun

This program first prompts the user to enter a year as an int value and checks if it is a leap year.

A year is a leap year if it is divisible by 4 but not by 100, or it is divisible by 400.

(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

Page 77: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 77

Example: A Simple Math Learning Tool

AdditionTutorAdditionTutor RunRun

This example creates a program to let a first grader practice additions. The program randomly generates two single-digit integers number1 and number2 and displays a question such as “What is 7 + 9?” to the student, as shown below. After the student types the answer in the input dialog box, the program displays a message dialog box to indicate whether the answer is true or false.

Page 78: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 78

The & and | Operators

&&: conditional AND operator&: unconditional AND operator||: conditional OR operator|: unconditional OR operator

exp1 && exp2(1 < x) && (x < 100)

(1 < x) & (x < 100)

Page 79: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 79

The & and | Operators

If x is 1, what is x after this expression?

(x > 1) & (x++ < 10)

If x is 1, what is x after this expression?

(1 > x) && ( 1 > x++)

How about (1 == x) | (10 > x++)?

(1 == x) || (10 > x++)?

Page 80: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 80

Selection Statements

if Statements

switch Statements

Conditional Operators

Page 81: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 81

TIP

if (number % 2 == 0) even = true; else even = false;

(a)

Equivalent boolean even = number % 2 == 0;

(b)

Page 82: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 82

CAUTION

if (even == true) System.out.println( "It is even.");

(a)

Equivalent if (even) System.out.println( "It is even.");

(b)

Page 83: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 83

Example: An Improved Math Learning

Tool This example creates a program to teach a first grade child how to learn subtractions. The program randomly generates two single-digit integers number1 and number2 with number1 > number2 and displays a question such as “What is 9 – 2?” to the student, as shown in the figure. After the student types the answer in the input dialog box, the program displays a message dialog box to indicate whether the answer is correct, as shown in figure.

SubtractionTutorSubtractionTutor Run

Page 84: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 84

Example: Guessing Birth Date

GuessBirthDateGuessBirthDate Run

The program can guess your birth date. Run to see how it works.

Page 85: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 85

Conditional Operator, cont.

(booleanExp) ? exp1 : exp2

Page 86: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 86

Formatting Output Use the new JDK 1.5 printf statement.

System.out.printf(format, items);

Where format is a string that may consist of substrings and format specifiers. A format specifier specifies how an item should be displayed. An item may be a numeric value, character, boolean value, or a string. Each specifier begins with a percent sign.

JDK 1.5Feature

Page 87: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 87

Frequently-Used Specifiers JDK 1.5Feature

Specifier Output Example

%b a boolean value true or false

%c a character 'a'

%d a decimal integer 200

%f a floating-point number 45.460000

%e a number in standard scientific notation 4.556000e+01

%s a string "Java is cool"

int count = 5;

double amount = 45.56;

System.out.printf("count is %d and amount is %f", count, amount);

display count is 5 and amount is 45.560000

items

Page 88: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 88

Creating Formatted StringsSystem.out.printf(format, item1, item2, ..., itemk)

String.format(format, item1, item2, ..., itemk)

String s = String.format("count is %d and amount is %f", 5, 45.56));

Page 89: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 89

Operator Precedence var++, var-- +, - (Unary plus and minus), ++var,--var (type) Casting ! (Not) *, /, % (Multiplication, division, and remainder) +, - (Binary addition and subtraction) <, <=, >, >= (Comparison) ==, !=; (Equality) & (Unconditional AND) ^ (Exclusive OR) | (Unconditional OR) && (Conditional AND) Short-circuit AND || (Conditional OR) Short-circuit OR =, +=, -=, *=, /=, %= (Assignment operator)

Page 90: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 90

while Loop Flow Chart

while (loop-continuation-condition) {

// loop-body;

Statement(s);

}

int count = 0;

while (count < 100) {

System.out.println("Welcome to Java!");

count++;

}

Loop Continuation Condition?

true

Statement(s) (loop body)

false (count < 100)?

true

System.out.println("Welcome to Java!"); count++;

false

(A) (B)

count = 0;

Page 91: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 91

Example: An Advanced Math Learning Tool

The Math subtraction learning tool program generates just one question for each run. You can use a loop to generate questions repeatedly. This example gives a program that generates ten questions and reports the number of the correct answers after a student answers all ten questions.

IMPORTANT NOTE: To run the program from the Run button, (1) set c:\jdk1.5.0\bin for path, and (2) install slides from the Instructor Resource Website to a directory (e.g., c:\LiangIR) .

SubtractionTutorLoopSubtractionTutorLoop Run

Page 92: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 92

Ending a Loop with a Sentinel Value

Often the number of times a loop is executed is not predetermined. You may use an input value to signify the end of the loop. Such a value is known as a sentinel value.

Write a program that reads and calculates the sum of an unspecified number of integers. The input 0 signifies the end of the input.

SentinelValueSentinelValue Run

IMPORTANT NOTE: To run the program from the Run button, (1) set c:\jdk1.5.0\bin for path, and (2) install slides from the Instructor Resource Website to a directory (e.g., c:\LiangIR) .

Page 93: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 93

CautionDon’t use floating-point values for equality checking in a loop control. Since floating-point values are approximations, using them could result in imprecise counter values and inaccurate results. This example uses int value for data. If a floating-point type value is used for data, (data != 0) may be true even though data is 0.

// data should be zerodouble data = Math.pow(Math.sqrt(2), 2) - 2; if (data == 0) System.out.println("data is zero");else System.out.println("data is not zero");

Page 94: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 94

do-while Loop

do {

// Loop body;

Statement(s);

} while (loop-continuation-condition);

Loop Continuation Condition?

true

Statement(s) (loop body)

false

Page 95: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 95

for Loopsfor (initial-action; loop-

continuation-condition; action-after-each-iteration) {

// loop body; Statement(s);}

int i;for (i = 0; i < 100; i++) { System.out.println( "Welcome to Java!"); }

Loop Continuation Condition?

true

Statement(s) (loop body)

false

(A)

Action-After-Each-Iteration

Initial-Action

(i < 100)?

true

System.out.println( "Welcome to Java");

false

(B)

i++

i = 0

Page 96: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 96

NoteThe initial-action in a for loop can be a list of zero or more comma-separated expressions. The action-after-each-iteration in a for loop can be a list of zero or more comma-separated statements. Therefore, the following two for loops are correct. They are rarely used in practice, however.

for (int i = 1; i < 100; System.out.println(i++));

 

for (int i = 0, j = 0; (i + j < 10); i++, j++) {

// Do something

}

Page 97: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 97

NoteIf the loop-continuation-condition in a for loop is omitted, it is implicitly true. Thus the statement given below in (a), which is an infinite loop, is correct. Nevertheless, it is better to use the equivalent loop in (b) to avoid confusion:

for ( ; ; ) { // Do something } (a)

Equivalent while (true) { // Do something }

(b)

Page 98: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 98

Example: Using for Loops

Problem: Write a program that sums a series that starts with 0.01 and ends with 1.0. The numbers in the series will increment by 0.01, as follows: 0.01 + 0.02 + 0.03 and so on.

TestSumTestSum Run

Page 99: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 99

Nested Loops

Problem: Write a program that uses nested for loops to print a multiplication table.

TestMultiplicationTableTestMultiplicationTable

Run

Page 100: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 100

Example:Finding the Greatest Common Divisor Problem: Write a program that prompts the user to enter two positive integers and finds their greatest common divisor.

Solution: Suppose you enter two integers 4 and 2, their greatest common divisor is 2. Suppose you enter two integers 16 and 24, their greatest common divisor is 8. So, how do you find the greatest common divisor? Let the two input integers be n1 and n2. You know number 1 is a common divisor, but it may not be the greatest commons divisor. So you can check whether k (for k = 2, 3, 4, and so on) is a common divisor for n1 and n2, until k is greater than n1 or n2.

GreatestCommonDivisorGreatestCommonDivisor RunRun

Page 101: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 101

Example: Finding the Sales Amount

Problem: You have just started a sales job in a department store. Your pay consists of a base salary and a commission. The base salary is $5,000. The scheme shown below is used to determine the commission rate.

Sales Amount Commission Rate$0.01–$5,000 8 percent$5,000.01–$10,000 10 percent$10,000.01 and above 12 percent

Your goal is to earn $30,000 in a year. Write a program that will find out the minimum amount of sales you have to generate in order to make $30,000.

FindSalesAmountFindSalesAmount RunRun

Page 102: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 102

Example: Displaying a Pyramid of Numbers

Problem: Write a program that prompts the user to enter an integer from 1 to 15 and displays a pyramid. For example, if the input integer is 12, the output is shown below.

PrintPyramidPrintPyramid RunRun

Page 103: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 103

Using break and continue

Examples for using the break and continue keywords:

TestBreak.java

TestContinue.java

TestBreakTestBreak

TestContinueTestContinue

Run

Run

Page 104: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 104

Example: Displaying Prime Numbers

Problem: Write a program that displays the first 50 prime numbers in five lines, each of which contains 10 numbers. An integer greater than 1 is prime if its only positive divisor is 1 or itself. For example, 2, 3, 5, and 7 are prime numbers, but 4, 6, 8, and 9 are not.

Solution: The problem can be broken into the following tasks:•For number = 2, 3, 4, 5, 6, ..., test whether the number is prime.•Determine whether a given number is prime.•Count the prime numbers.•Print each prime number, and print 10 numbers per line.

PrimeNumberPrimeNumber RunRun

Page 105: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 105

Introducing Methods

A method is a collection of statements that are grouped together to perform an operation.

public static int max(int num1, int num2) {

int result; if (num1 > num2) result = num1; else result = num2; return result;

}

modifier return value type method name formal parameters

return value

method body

method header

parameter list

Define a method Invoke a method

int z = max(x, y);

actual parameters

(arguments)

Page 106: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 106

Introducing Methods, cont.

• Method signature is the combination of the method name and the parameter list.

• The variables defined in the method header are known as formal parameters.

• When a method is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument.

Page 107: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 107

Introducing Methods, cont.• A method may return a value. The

returnValueType is the data type of the value the method returns. If the method does not return a value, the returnValueType is the keyword void. For example, the returnValueType in the main method is void.

Page 108: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 108

Calling MethodsListing 5.1 Testing the max method

This program demonstrates calling a method max to return the largest of the int values

TestMaxTestMax Run

Page 109: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 109

Calling Methods, cont.

public static void main(String[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); }

public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }

pass the value of i pass the value of j

Page 110: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 110

Reuse Methods from Other Classes

NOTE: One of the benefits of methods is for reuse. The max method can be invoked from any class besides TestMax. If you create a new class Test, you can invoke the max method using ClassName.methodName (e.g., TestMax.max).

Page 111: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 111

Call Stacks

The main method is invoked.

Space required for the main method k:

j: 2 i: 5

The max method is invoked.

Space required for the max method result: 5

num2: 2 num1: 5

The max method is finished and the return value is sent to k.

The main method is finished.

Stack is empty

Space required for the main method k:

j: 2 i: 5

Space required for the main method k: 5

j: 2 i: 5

Page 112: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 112

Trace Call Stack

public static void main(String[] args) { int i = 5; int j = 2; int k = max(i, j); System.out.println( "The maximum between " + i + " and " + j + " is " + k); }

public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }

Return result and assign it to k

The max method is invoked.

Space required for the max method result: 5

num2: 2 num1: 5

Space required for the main method k:5

j: 2 i: 5

Page 113: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 113

Pass by Value

Listing 5.2 Testing Pass by value

This program demonstrates passing values to the methods.

TestPassByValueTestPassByValue Run

Page 114: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 114

Pass by Value, cont.

The main method is invoked

The values of num1 and num2 are passed to n1 and n2. Executing swap does not affect num1 and num2.

Space required for the main method

num2: 2 num1: 1

The swap method is invoked

Space required for the main method

num2: 2 num1: 1

Space required for the swap method temp:

n2: 2 n1: 1

The swap method is finished

Space required for the main method

num2: 2 num1: 1

The main method is finished

Stack is empty

Page 115: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 115

Overloading Methods

Listing 5.3 Overloading the max Method

public static double max(double num1, double num2) {

if (num1 > num2) return num1; else return num2;}

TestMethodOverloadingTestMethodOverloading Run

Page 116: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 116

Ambiguous Invocation

Sometimes there may be two or more possible matches for an invocation of a method, but the compiler cannot determine the most specific match. This is referred to as ambiguous invocation. Ambiguous invocation is a compilation error.

Page 117: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 117

Ambiguous Invocationpublic class AmbiguousOverloading { public static void main(String[] args) { System.out.println(max(1, 2)); }  public static double max(int num1, double num2) { if (num1 > num2) return num1; else return num2; } public static double max(double num1, int num2) { if (num1 > num2) return num1; else return num2; }}

Page 118: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 118

Method Abstraction

You can think of the method body as a black box that contains the detailed implementation for the method.

Method Signature

Method body

Black Box

Optional arguments for Input

Optional return value

Page 119: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 119

Benefits of Methods

• Write a method once and reuse it anywhere.

• Information hiding. Hide the implementation from the user.

• Reduce complexity.

Page 120: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 120

The Math Class Class constants:

– PI– E

Class methods: – Trigonometric Methods – Exponent Methods– Rounding Methods– min, max, abs, and random Methods

Page 121: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 121

Trigonometric Methods sin(double a)

cos(double a)

tan(double a)

acos(double a)

asin(double a)

atan(double a)

Radians

toRadians(90)

Examples:

Math.sin(0) returns 0.0

Math.sin(Math.PI / 6) returns 0.5

Math.sin(Math.PI / 2) returns 1.0

Math.cos(0) returns 1.0

Math.cos(Math.PI / 6) returns 0.866

Math.cos(Math.PI / 2) returns 0

Page 122: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 122

Exponent Methods exp(double a)

Returns e raised to the power of a.

log(double a)

Returns the natural logarithm of a.

log10(double a)

Returns the 10-based logarithm of a.

pow(double a, double b)

Returns a raised to the power of b.

sqrt(double a)

Returns the square root of a.

Examples:

Math.exp(1) returns 2.71

Math.log(2.71) returns 1.0

Math.pow(2, 3) returns 8.0

Math.pow(3, 2) returns 9.0

Math.pow(3.5, 2.5) returns 22.91765

Math.sqrt(4) returns 2.0

Math.sqrt(10.5) returns 3.24

Page 123: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 123

Rounding Methods double ceil(double x)

x rounded up to its nearest integer. This integer is returned as a double value.

double floor(double x)x is rounded down to its nearest integer. This integer is returned as a

double value.

double rint(double x)x is rounded to its nearest integer. If x is equally close to two integers,

the even one is returned as a double.

int round(float x)Return (int)Math.floor(x+0.5).

long round(double x)Return (long)Math.floor(x+0.5).

Page 124: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 124

Rounding Methods ExamplesMath.ceil(2.1) returns 3.0 Math.ceil(2.0) returns 2.0Math.ceil(-2.0) returns –2.0Math.ceil(-2.1) returns -2.0Math.floor(2.1) returns 2.0Math.floor(2.0) returns 2.0Math.floor(-2.0) returns –2.0Math.floor(-2.1) returns -3.0Math.rint(2.1) returns 2.0Math.rint(2.0) returns 2.0Math.rint(-2.0) returns –2.0Math.rint(-2.1) returns -2.0Math.rint(2.5) returns 2.0Math.rint(-2.5) returns -2.0Math.round(2.6f) returns 3 Math.round(2.0) returns 2 Math.round(-2.0f) returns -2

Math.round(-2.6) returns -3

Page 125: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 125

min, max, and abs max(a, b)and min(a,

b)Returns the maximum or minimum of two parameters.

abs(a)Returns the absolute value of the parameter.

random()Returns a random double valuein the range [0.0, 1.0).

Examples:

Math.max(2, 3) returns 3

Math.max(2.5, 3) returns 3.0

Math.min(2.5, 3.6) returns 2.5

Math.abs(-2) returns 2

Math.abs(-2.1) returns 2.1

Page 126: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 126

The random MethodGenerates a random double value greater than or equal to 0.0 and less than 1.0 (0 <= Math.random() < 1.0).

Examples:

(int)(Math.random() * 10) Returns a random integer

between 0 and 9.

50 + (int)(Math.random() * 50) Returns a random integer between 50 and 99.

In general,

a + Math.random() * b Returns a random number between

a and a + b, excluding a + b.

Page 127: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 127

Stepwise Refinement (Optional)

The concept of method abstraction can be applied to the process of developing programs. When writing a large program, you can use the “divide and conquer” strategy, also known as stepwise refinement, to decompose it into subproblems. The subproblems can be further decomposed into smaller, more manageable problems.

PrintCalendarPrintCalendar Run

Page 128: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 128

PrintCalender Case Study Let us use the PrintCalendar example to demonstrate the stepwise refinement approach.

Run

Page 129: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 129

Design Diagram

printCalendar (main)

readInput printMonth

getStartDay

printMonthTitle printMonthBody

getTotalNumOfDays

getNumOfDaysInMonth

getMonthName

isLeapYear

Page 130: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 130

Implementation: Top-Down

A Skeleton for printCalendarA Skeleton for printCalendar

Top-down approach is to implement one method in the structure chart at a time from the top to the bottom. Stubs can be used for the methods waiting to be implemented. A stub is a simple but incomplete version of a method. The use of stubs enables you to test invoking the method from a caller. Implement the main method first and then use a stub for the printMonth method. For example, let printMonth display the year and the month in the stub. Thus, your program may begin like this:

Page 131: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 131

Implementation: Bottom-UpBottom-up approach is to implement one method in the structure chart at a time from the bottom to the top. For each method implemented, write a test program to test it. Both top-down and bottom-up methods are fine. Both approaches implement the methods incrementally and help to isolate programming errors and makes debugging easy. Sometimes, they can be used together.

Page 132: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 132

PackageThere are three reasons for using packages:

1. To avoid naming conflicts. When you develop reusable classes to be shared by other programmers, naming conflicts often occur. To prevent this, put your classes into packages so that they can be referenced through package names.

2. To distribute software conveniently. Packages group related classes so that they can be easily distributed.

3. To protect classes. Packages provide protection so that the protected members of the classes are accessible to the classes in the same package, but not to the external classes.

Optional

Page 133: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 133

Package-Naming Conventions Packages are hierarchical, and you can have packages within packages. For example, java.lang.Math indicates that Math is a class in the package lang and that lang is a package in the package java. Levels of nesting can be used to ensure the uniqueness of package names.

Choosing a unique name is important because your package may be used on the Internet by other programs. Java designers recommend that you use your Internet domain name in reverse order as a package prefix. Since Internet domain names are unique, this prevents naming conflicts. Suppose you want to create a package named mypackage on a host machine with the Internet domain name prenhall.com. To follow the naming convention, you would name the entire package com.prenhall.mypackage. By convention, package names are all in lowercase.

Page 134: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 134

Package DirectoriesJava expects one-to-one mapping of the package name and the file system directory structure. For the package named com.prenhall.mypackage, you must create a directory, as shown in the figure. In other words, a package is actually a directory that contains the bytecode of the classes.

com.prenhall.mypackage

The com directory does not have to be the root directory. In order for Java to know where your package is in the file system, you must modify the environment variable classpath so that it points to the directory in which your package resides.

Page 135: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 135

Setting classpath Environment The com directory does not have to be the root directory. In order for Java to know where your package is in the file system, you must modify the environment variable classpath so that it points to the directory in which your package resides.

Suppose the com directory is under c:\book. The following line adds c:\book into the classpath:

classpath=.;c:\book;

The period (.) indicating the current directory is always in classpath. The directory c:\book is in classpath so that you can use the package com.prenhall.mypackage in the program.

Page 136: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 136

Putting Classes into Packages Every class in Java belongs to a package. The class is added to the package when it is compiled. All the classes that you have used so far in this book were placed in the current directory (a default package) when the Java source programs were compiled. To put a class in a specific package, you need to add the following line as the first noncomment and nonblank statement in the program:

package packagename;

Page 137: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 137

Listing 5.8 Putting Classes into PackagesProblem This example creates a class named Format and places it in the package com.prenhall.mypackage. The Format class contains the format(number, numOfDecimalDigits) method that returns a new number with the specified number of digits after the decimal point. For example, format(10.3422345, 2) returns 10.34, and format(-0.343434, 3) returns –0.343.

Solution1. Create Format.java as follows and save it into c:\book\com\prenhall\mypackage.

// Format.java: Format number. package com.prenhall.mypackage; public class Format { public static double format( double number, int numOfDecimalDigits) { return Math.round(number * Math.pow(10, numOfDecimalDigits)) / Math.pow(10, numOfDecimalDigits); }}

2. Compile Format.java. Make sure Format.class is in c:\book\com\prenhall\mypackage.

Page 138: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 138

Using Classes from Packages There are two ways to use classes from a package. • One way is to use the fully qualified name of the class. For example, the fully qualified name for JOptionPane is javax.swing.JOptionPane. For Format in the preceding example, it is com.prenhall.mypackage.Format. This is convenient if the class is used a few times in the program. • The other way is to use the import statement. For example, to import all the classes in the javax.swing package, you can use import javax.swing.*;

An import that uses a * is called an import on demand declaration. You can also import a specific class. For example, this statement imports javax.swing.JOptionPane:

import javax.swing.JOptionPane;

The information for the classes in an imported package is not read in at compile time or runtime unless the class is used in the program. The import statement simply tells the compiler where to locate the classes.

Page 139: Advanced Programming Language MSc. Nguyen Cao Dat dat@cse.hcmut.edu.vn.

Liang, Introduction to Java Programming, Sixth Edition, (c) 2005 Pearson Education, Inc. All rights reserved. 0-13-148952-6 139

Listing 5.9 Using Packages

Problem This example shows a program that uses the Format class in the com.prenhall.mypackage.mypackage package.

Solution1. Create TestFormatClass.java as follows and save it into c:\book.The following code gives the solution to the problem.

// TestFormatClass.java: Demonstrate using the Format classimport com.prenhall.mypackage.Format; public class TestFormatClass { /** Main method */ public static void main(String[] args) { System.out.println(Format.format(10.3422345, 2)); System.out.println(Format.format(-0.343434, 3)); }}