1、Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Chapter 3 Selections1Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807MotivationsIf you assigned a negative value for rad
2、ius in Listing 2.1,ComputeArea.java,the program would print an invalid result.If the radius is negative,you dont want the program to compute the area.How can you deal with this situation?2Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.01321308
3、07Objectives3FTo declare boolean type and write Boolean expressions using comparison operators(3.2).FTo program AdditionQuiz using Boolean expressions(3.3).FTo implement selection control using one-way if statements(3.4)FTo program the GuessBirthday game using one-way if statements(3.5).FTo implemen
4、t selection control using two-way if statements(3.6).FTo implement selection control using nested if statements(3.7).FTo avoid common errors in if statements(3.8).FTo program using selection statements for a variety of examples(BMI,ComputeTax,SubtractionQuiz)(3.9-3.11).FTo generate random numbers us
5、ing the Math.random()method(3.9).FTo combine conditions using logical operators(&,|,and!)(3.12).FTo program using selection statements with combined conditions(LeapYear,Lottery)(3.13-3.14).FTo implement selection control using switch statements(3.15).FTo write expressions using the conditional opera
6、tor(3.16).FTo format output using the System.out.printf method and to format strings using the String.format method(3.17).FTo examine the rules governing operator precedence and associativity(3.18).F(GUI)To get user confirmation using confirmation dialogs(3.19).Liang,Introduction to Java Programming
7、,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807The boolean Type and OperatorsOften 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 va
8、lues.The result of the comparison is a Boolean value:true or false.boolean b=(1 2);4Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Comparison Operators5Operator Nameless thangreater than=greater than or equal to=equal to!=not equal t
9、oLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:A Simple Math Learning Tool6AdditionQuizRunThis example creates a program to let a first grader practice additions.The program randomly generates two single-digit integers numbe
10、r1 and number2 and displays a question such as“What is 7+9?”to the student.After the student types the answer,the program displays a message to indicate whether the answer is true or false.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130
11、807One-way if Statementsif(boolean-expression)statement(s);7 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(radius=0)area=radius*radius*PI;System.out.println(The area +for the circle
12、 of radius +radius+is +area);Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Note8 if i 0 System.out.println(i is positive);(a)Wrong(b)Correct if(i 0)System.out.println(i is positive);if(i 0)System.out.println(i is positive);(a)Equiva
13、lent(b)if(i 0)System.out.println(i is positive);Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Simple if Demo9SimpleIfDemoRunWrite a program that prompts the user to enter an integer.If the number is a multiple of 5,print HiFive.If t
14、he number is divisible by 2,print HiEven.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:Guessing BirthdayThe program can guess your birth date.Run to see how it works.10GuessBirthdayRun 16 17 18 19 20 21 22 23 24 25 26 27 28
15、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+=19 Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.A
16、ll rights reserved.0132130807Mathematics Basis for the Game19 is 10011 in binary.7 is 111 in binary.23 is 11101 in binary11 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 1
17、9 22 23 26 27 30 31 Set4 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 Set5+=19 10000 10 +1 10011 00110 10 +1 00111 19 7 10000 1000 100+1 11101 23 Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807The Two-way if Statementif(boolean-expres
18、sion)statement(s)-for-the-true-case;else statement(s)-for-the-false-case;12 Boolean Expression false true Statement(s)for the false case Statement(s)for the true case Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807if.else Exampleif(r
19、adius=0)area=radius*radius*3.14159;System.out.println(The area for the“+“circle of radius +radius+is +area);else System.out.println(Negative input);13Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Multiple Alternative if Statements14
20、 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 grade=F;Liang,Introduction to Java Programming,Eighth Edition,(c
21、)2011 Pearson Education,Inc.All rights reserved.0132130807Trace if-else statement15if(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.0The condition is falseanimationLiang,Introduction to Java Programming,Eighth Edi
22、tion,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Trace if-else statement16if(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.0The condition is falseanimationLiang,Introduction to Java Programming,Eig
23、hth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Trace if-else statement17if(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.0The condition is trueanimationLiang,Introduction to Java Programmi
24、ng,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Trace if-else statement18if(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.0grade is CanimationLiang,Introduction to Java Programming,Ei
25、ghth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Trace if-else statement19if(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.0Exit the if statementanimationLiang,Introduction to Java Programm
26、ing,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807NoteThe else clause matches the most recent if clause in the same block.20 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)Syste
27、m.out.println(A);else System.out.println(B);Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Note,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:
28、int i=1;int j=2;int k=3;if(i j)if(i k)System.out.println(A);else System.out.println(B);This statement prints B.21Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Common ErrorsAdding a semicolon at the end of an if clause is a common mi
29、stake.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.This error often occurs when you use the next-line block style.22WrongLiang,Introd
30、uction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807TIP23 if(number%2=0)even=true;else even=false;(a)Equivalent boolean even =number%2=0;(b)Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.013213
31、0807CAUTION24 if(even=true)System.out.println(It is even.);(a)Equivalent if(even)System.out.println(It is even.);(b)Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:An Improved Math Learning Tool This example creates a program
32、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 dialog box,the program displays a messa
33、ge dialog box to indicate whether the answer is correct.25SubtractionQuizRunLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:Body Mass Index Body Mass Index(BMI)is a measure of health on weight.It can be calculated by taking yo
34、ur 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:26ComputeBMIR u n BMI Interpretation below 16 serious underweight 16-18 underweight 18-24 normal weight 24-29 overweight 29-35 seriously overweight above 35
35、 gravely overweight Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:Computing TaxesThe US federal personal income tax is calculated based on the filing status and taxable income.There are four filing statuses:single filers,mar
36、ried filing jointly,married filing separately,and head of household.The tax rates for 2009 are shown below.27Marginal Tax RateSingleMarried Filing Jointly or Qualified Widow(er)Married Filing SeparatelyHead of Household10%$0$8,350$0$16,700$0$8,350$0$11,95015%$8,351$33,950$16,701$67,900$8,351$33,950$
37、11,951$45,50025%$33,951$82,250$67,901$137,050$33,951$68,525$45,501$117,45028%$82,251$171,550$137,051$208,850$68,525$104,425$117,451$190,20033%$171,551$372,950$208,851$372,950$104,426$186,475$190,201-$372,95035%$372,951+$372,951+$186,476+$372,951+Liang,Introduction to Java Programming,Eighth Edition,
38、(c)2011 Pearson Education,Inc.All rights reserved.0132130807Problem:Computing Taxes,cont.if(status=0)/Compute tax for single filerselse if(status=1)/Compute tax for married file jointlyelse if(status=2)/Compute tax for married file separatelyelse if(status=3)/Compute tax for head of householdelse /D
39、isplay wrong status28ComputeTaxRunLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Logical Operators29Operator Name!not&and|orexclusive or Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights r
40、eserved.0132130807Truth Table for Operator!30 p !p true false false true Example(assume age=24,gender=M)!(age 18)is false,because(age 18)is true.!(gender!=F)is true,because(grade!=F)is false.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.01321
41、30807Truth Table for Operator&31 p1 p2 p1&p2 false false false false true false true false false true true true Example(assume age=24,gender=F)(age 18)&(gender=F)is true,because(age 18)and(gender=F)are both true.(age 18)&(gender!=F)is false,because(gender!=F)is false.Liang,Introduction to Java Progr
42、amming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Truth Table for Operator|32 p1 p2 p1|p2 false false false false true true true false true true true true Example(assume age=24,gender=F)(age 34)|(gender=F)is true,because(gender=F)is true.(age 34)|(gender=M)is false,be
43、cause(age 34)and(gender=M)are both false.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Examples33Here is a program that checks whether a number is divisible by 2 and 3,whether a number is divisible by 2 or 3,and whether a number is
44、divisible by 2 or 3 but not both:TestBooleanOperatorsRunLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Truth Table for Operator!34 p !p true false false true Example!(1 2)is true,because(1 2)is false.!(1 0)is false,because(1 0)is tru
45、e.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Truth Table for Operator&35 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.(3 2)&(5 5)is fal
46、se,because(5 5)is false.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Truth Table for Operator|36 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 f
47、alse.(3 2)|(5 5)is true,because(3 2)is true.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Truth Table for Operator 37 p1 p2 p1 p2 false false false false true true true false true true true false Example(assume age=24,gender=F)(age
48、34)(gender=F)is true,because(age 34)is false but(gender=F)is true.(age 34)|(gender=M)is false,because(age 34)and(gender=M)are both false.Liang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807Examples38System.out.println(Is +number+divisible
49、 by 2 and 3?+(number%2=0)&(number%3=0);System.out.println(Is +number+divisible by 2 or 3?+(number%2=0)|(number%3=0);System.out.println(Is +number+divisible by 2 or 3,but not both?+(number%2=0)(number%3=0);TestBooleanOperatorsRunLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Ed
50、ucation,Inc.All rights reserved.0132130807The&and|OperatorsSupplement III.B,“The&and|Operators”39Companion WebsiteLiang,Introduction to Java Programming,Eighth Edition,(c)2011 Pearson Education,Inc.All rights reserved.0132130807The&and|OperatorsIf x is 1,what is x after this expression?(x 1)&(x+x)&(