• No results found

03slide.ppt

N/A
N/A
Protected

Academic year: 2020

Share "03slide.ppt"

Copied!
64
0
0

Loading.... (view fulltext now)

Full text

(1)

1

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

(2)

Motivations

If you assigned a negative value for radius in

(3)

3

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Objectives

To declare boolean type and use Boolean values true and false (§3.2).

To apply relational operators (<, <=, ==, !=, >, >=) and logic operators

(!, &&, ||, ^) to write Boolean expressions (§3.2).

To use Boolean expressions to control selection statements (§3.3-3.5).

To implement selection control using if and nested if statements (§3.3).

To implement selection control using switch statements (§3.4).

To write expressions using the conditional operator (§3.5).

To display formatted output using the System.out.printf method and to

format strings using the String.format method (§3.6).

To know the rules governing operator precedence and associativity

(§3.7).

(4)

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.

(5)

5

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Comparison Operators

Operator Name

<

less than

<=

less than or equal to

>

greater than

>=

greater than or equal to

==

equal to

(6)

Boolean Operators

Operator Name

!

not

&&

and

||

or

(7)

7

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Truth Table for Operator !

p !p

true false

false true

Example

(8)

Truth Table for Operator &&

p1 p2 p1 && p2

false false false

false true false

true false false

true true true

Example

(3 > 2) && (5 >= 5) is true, because (3 >

2) and (5 >= 5) are both true.

(9)

9

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Truth Table for Operator ||

p1 p2 p1 || p2

false false false

false true true

true false true

true true true

Example

(2 > 3) || (5 > 5) is false, because (2 > 3)

and (5 > 5) are both false.

(10)

Truth Table for Operator ^

p1 p2 p1 ^ p2

false false false

false true true

true false true

true true false

Example

(2 > 3) ^ (5 > 1) is true, because (2 > 3)

is false and (5 > 1) is true.

(11)

11

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Examples

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

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

System.out.println("Is " + num

ber

+ " divisible by 2 or 3? " +

((num

ber

% 2 == 0) || (num

ber

% 3 == 0)));

System.out.println("Is " + num

ber

+

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

(12)

Problem: Determining Leap Year?

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

(13)

13

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Problem: A Simple Math Learning Tool

AdditionQuiz

AdditionQuiz

Run

Run

This example creates a program to let a first grader

practice additions. The program randomly

(14)

The & and | Operators

Supplement III.B, “The & and |

Operators”

(15)

15

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

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++)?

(16)

Selection Statements

if

Statements

switch

Statements

(17)

17

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Simple

if

Statements

Boolean Expression

true

Statement(s)

false

(radius >= 0)

true area = radius * radius * PI;

System.out.println("The area for the circle of " + "radius " + radius + " is " + area);

false

(A) (B)

if (booleanExpression) {

statement(s);

}

if (radius >= 0) {

area = radius * radius * PI;

System.out.println("The area"

+ " for the circle of radius "

+ radius + " is " + area);

(18)

Note

if

(

(i > 0) && (i < 10)

)

{

System.out.println("i is an " +

+ "integer between 0 and 10");

}

(a)

Equivalent

(b)

if

(

(i > 0) && (i < 10)

)

System.out.println("i is an " +

+ "integer between 0 and 10");

(19)

19

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Caution

Adding a semicolon at the end of an if clause is a common

mistake.

if (radius >= 0);

{

area = radius*radius*PI;

System.out.println(

"The area for the circle of radius " +

radius + " is " + area);

}

This mistake is hard to find, because it is not a compilation error

or a runtime error, it is a logic error.

(20)

The

if...else

Statement

if (booleanExpression) {

statement(s)-for-the-true-case;

}

else {

statement(s)-for-the-false-case;

}

Boolean

Expression

false

true

(21)

21

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

if...else

Example

if (radius >= 0) {

area = radius * radius * 3.14159;

System.out.println("The area for the “

+ “circle of radius " + radius +

" is " + area);

}

else {

(22)

Multiple Alternative if Statements

if (score >= 90.0)

grade = 'A';

else

if (score >= 80.0)

grade = 'B';

else

if (score >= 70.0)

grade = 'C';

else

if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Equivalent

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

(23)

23

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace if-else statement

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Suppose score is 70.0

The condition is false

(24)

Trace if-else statement

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Suppose score is 70.0

The condition is false

(25)

25

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace if-else statement

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Suppose score is 70.0

The condition is true

(26)

Trace if-else statement

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Suppose score is 70.0

grade is C

(27)

27

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace if-else statement

if (score >= 90.0)

grade = 'A';

else if (score >= 80.0)

grade = 'B';

else if (score >= 70.0)

grade = 'C';

else if (score >= 60.0)

grade = 'D';

else

grade = 'F';

Suppose score is 70.0

Exit the if statement

(28)

Note

The else clause matches the most recent if clause in the

same block.

int i = 1;

int j = 2;

int k = 3;

if (i > j)

if

(i > k)

System.out.println("A");

else

System.out.println("B");

(

a

)

Equivalent

(

b

)

int i = 1;

int j = 2;

int k = 3;

if (i > j)

if

(i > k)

System.out.println("A");

else

(29)

29

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Note, cont.

Nothing is printed from the preceding statement. To force

the else clause to match the first if clause, you must add a

pair of braces:

int i = 1;

int j = 2;

int k = 3;

if (i > j)

{

if (i > k)

System.out.println("A");

}

else

System.out.println("B");

(30)

TIP

if (number % 2 == 0)

even = true;

else

even = false;

(

a

)

Equivalent

boolean even

= number % 2 == 0;

(31)

31

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

CAUTION

if (even == true)

System.out.println(

"It is even.");

(a)

Equivalent

if (even)

System.out.println(

"It is even.");

(32)

Problem: 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. After

the student types the answer in the input

(33)

33

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Problem: Lottery

Randomly generates a lottery of a two-digit number, prompts

the user to enter a two-digit number, and determines whether

the user wins according to the following rule:

Lottery

Lottery

Run

• If the user input matches the lottery in exact order, the

award is $10,000.

• If the user input matches the lottery, the award is

$3,000.

(34)

Problem: Body Mass Index

Body Mass Index (BMI) is a measure of health on

weight. It can be calculated by taking your weight in

kilograms and dividing by the square of your height

in meters. The interpretation of BMI for people 16

years or older is as follows:

ComputeBMI

ComputeBMI

BMI

Interpretation

below 16

serious underweight

16-18

underweight

(35)

35

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Problem: Computing Taxes

(36)

Problem: Computing Taxes, cont.

if (status == 0) {

// Compute tax for single filers }

else if (status == 1) {

// Compute tax for married file jointly }

else if (status == 2) {

// Compute tax for married file separately }

else if (status == 3) {

// Compute tax for head of household }

else {

(37)

37

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Problem: Guessing Birth Date

GuessBirthDate

GuessBirthDate

Run

The program can guess your birth date. Run

to see how it works.

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

Set1

8 9 10 11

12 13 14 15

24 25 26 27

28 29 30 31

Set2

1 3 5 7

9 11 13 15

17 19 21 23

25 27 29 31

Set3

2 3 6 7

10 11 14 15

18 19 22 23

26 27 30 31

Set4

4 5 6 7

12 13 14 15

20 21 22 23

28 29 30 31

Set5

+

(38)

switch

Statements

switch (status) {

case 0: compute taxes for single filers;

break;

case 1: compute taxes for married file jointly;

break;

case 2: compute taxes for married file separately;

break;

case 3: compute taxes for head of household;

break;

(39)

39

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

switch

Statement Flow Chart

status is 0

Compute tax for single filers

break

Compute tax for married file jointly

break

status is 1

Compute tax for married file separatly

break

status is 2

Compute tax for head of household

break

status is 3

Default actions

default

(40)

switch

Statement Rules

switch (switch-expression) {

case value1: statement(s)1;

break;

case value2: statement(s)2;

break;

case valueN: statement(s)N;

break;

default: statement(s)-for-default;

}

The switch-expression must

yield a value of char, byte,

short, or int type and must

always be enclosed in

parentheses.

The value1, ..., and valueN must

have the same data type as the

value of the switch-expression.

The resulting statements in the

case statement are executed when

the value in the case statement

matches the value of the

switch-expression. Note that value1, ...,

and valueN are constant

(41)

41

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

switch

Statement Rules

The keyword break is optional,

but it should be used at the end of

each case in order to terminate the

remainder of the switch statement.

If the break statement is not

present, the next case statement

will be executed.

switch (switch-expression) {

case value1: statement(s)1;

break;

case value2: statement(s)2;

break;

case valueN: statement(s)N;

break;

default: statement(s)-for-default;

}

The default case, which is

optional, can be used to perform

actions when none of the

specified cases matches the

(42)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

Suppose ch is 'a':

(43)

43

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

ch is 'a':

(44)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

Execute this line

(45)

45

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

Execute this line

(46)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

Execute this line

(47)

47

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

case

'b'

: System.out.println(ch);

case

'c'

: System.out.println(ch);

}

Next statement;

Execute next statement

(48)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

break

;

case

'b'

: System.out.println(ch);

break

;

case

'c'

: System.out.println(ch);

}

Suppose ch is 'a':

(49)

49

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

break

;

case

'b'

: System.out.println(ch);

break

;

case

'c'

: System.out.println(ch);

}

ch is 'a':

(50)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

break

;

case

'b'

: System.out.println(ch);

break

;

case

'c'

: System.out.println(ch);

}

Execute this line

(51)

51

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

break

;

case

'b'

: System.out.println(ch);

break

;

case

'c'

: System.out.println(ch);

}

Execute this line

(52)

Trace switch statement

switch

(ch) {

case

'a'

: System.out.println(ch);

break

;

case

'b'

: System.out.println(ch);

break

;

case

'c'

: System.out.println(ch);

}

Next statement;

Execute next statement

(53)

53

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Conditional Operator

if (x > 0)

y = 1

else

y = -1;

is equivalent to

y = (x > 0) ? 1 : -1;

(booleanExpression) ? expression1 : expression2

(54)

Conditional Operator

if (num % 2 == 0)

System.out.println(num + “is even”);

else

System.out.println(num + “is odd”);

System.out.println(

(55)

55

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Conditional Operator, cont.

(56)

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,

(57)

57

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Frequently-Used Specifiers

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

(58)

Operator Precedence

var++,

var--

+, - (Unary plus and minus), ++var

,

--var

(type) Casting

! (Not)

*

,

/

,

% (Multiplication, division, and remainder)

+

,

- (Binary addition and subtraction)

<

,

<=

,

>

,

>= (Comparison)

==

,

!=; (Equality)

^ (Exclusive OR)

&& (Conditional AND) Short-circuit AND

|| (Conditional OR) Short-circuit OR

(59)

59

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Operator Precedence and Associativity

The expression in the parentheses is evaluated first.

(Parentheses can be nested, in which case the expression

in the inner parentheses is executed first.) When

evaluating an expression without parentheses, the

operators are applied according to the precedence rule and

the associativity rule.

If operators with the same precedence are next to each

other, their associativity determines the order of

(60)

Operator Associativity

When two operators with the same precedence

are evaluated, the

associativity

of the operators

determines the order of evaluation. All binary

operators except assignment operators are

left-associative

.

a – b + c – d is equivalent to ((a – b) + c) – d

Assignment operators are

right-associative

.

Therefore, the expression

(61)

61

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

Example

Applying the operator precedence and associativity rule,

the expression 3 + 4 * 4 > 5 * (4 + 3) - 1 is evaluated as

follows:

3 + 4 * 4 > 5 * (4 + 3) - 1

3 + 4 * 4 > 5 * 7 – 1

3 + 16 > 5 * 7 – 1

3 + 16 > 35 – 1

19 > 35 – 1

19 > 34

false

(1) inside parentheses first

(2) multiplication

(3) multiplication

(4) addition

(5) subtraction

(62)

Operand Evaluation Order

Supplement III.A, “Advanced discussions on

how an expression is evaluated in the JVM.”

(63)

63

Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All r

(GUI) Confirmation Dialogs

(64)

Problem: Guessing Birth Date

The program can guess your birth date. Run

to see how it works.

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

Set1

8 9 10 11

12 13 14 15

24 25 26 27

28 29 30 31

Set2

1 3 5 7

9 11 13 15

17 19 21 23

25 27 29 31

Set3

2 3 6 7

10 11 14 15

18 19 22 23

26 27 30 31

Set4

4 5 6 7

12 13 14 15

20 21 22 23

28 29 30 31

Set5

+

References

Related documents

Management in Practice, 7 th edition, Pearson Education, Inc., Upper Saddle River, New Jersey.. Enterprise Systems for Management, Pearson Education, Inc., Upper Saddle River,

Liang, Introduc tion to J ava Programming, Tenth Edition, (c ) 2013 Pearson Educ ation,

There is clear and convincing evidence that the Respondent has violated Rule 8.4(c) of the MRPC by misappropriating payments received from his clients that represented [legal fees

In the context menu of c:\smith in the Filesystems, choose New, Java Package to display the Package wizard, as shown in Figure 25...

As stated in the Java language white paper by Sun, Java is simple, object- oriented, distributed, interpreted, robust, secure, architecture-neutral, portable,

Copyright © 2009 Pearson Education, Inc., publishing as Pearson Benjamin Cummings..

We evaluate the performance of RAMMIE, Farrington Flexible and EARS by comparing the power of detection, sensitivity, specificity and timeliness using extensive simulations based

Lipase-catalyzed transesterification reactions were performed between short- and medium-chain fatty acid ethyl esters and glycerol.. Different variables were investigated, such as