1
5
Control Statements: Part 2
2005 Pearson Education, Inc. All rights reserved.
Not everything that can be counted counts, and not every thing that counts can be counted.
Albert Einstein
Who can control his fate?
William Shakespeare
The used key is always bright.
Benjamin Franklin
Intelligence is the faculty of making artificial objects, especially tools to make tools.
Henri Bergson
Every advantage in the past is judged in the light of the final issue.
Demosthenes
2005 Pearson Education, Inc. All rights reserved.
OBJECTIVES
In this chapter you will learn: The essentials of counter-controlled repetition. To use the for and do while repetition statements to execute statements in a program repeatedly. To understand multiple selection using the switch selection statement. To use the break and continue program control statements to alter the flow of control. To use the logical operators to form complex conditional expressions in control statements.
2005 Pearson Education, Inc. All rights reserved.
5.1 5.2 5.3 5.4 5.5 5.6
Introduction Essentials of Counter-Controlled Repetition
for Repetition Statement
Examples Using the for Statement
do while Repetition Statement switch Multiple-Selection Statement
5.7
5.8 5.9 5.10 5.11 5.12
break and continue Statements
Logical Operators Structured Programming Summary (Optional) GUI and Graphics Case Study: Drawing Rectangles and Ovals (Optional) Software Engineering Case Study: Identifying Objects States and Activities Wrap-Up
2005 Pearson Education, Inc. All rights reserved.
5.1 Introduction
Continue structured-programming discussion
Introduce Javas remaining control structures
for, dowhile, switch
2005 Pearson Education, Inc. All rights reserved.
5.2 Essentials of Counter-Controlled Repetition
Counter-controlled repetition requires:
Control variable (loop counter)
Initial value of the control variable Increment/decrement of control variable through each loop
Loop-continuation condition that tests for the final value of the control variable
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Fig. 5.1: [Link] // Counter-controlled repetition with the while repetition statement. public class WhileCounter { public static void main( String args[] ) {
Outline
Control-variable name is counter Control-variable initial value is 1 [Link]
int counter = 1; // declare and initialize control variable while ( counter <= 10 ) // loop-continuation condition { [Link]( "%d } // end while [Link](); // output a newline } // end main ", counter ); ++counter; // increment control variable by 1
Condition tests for counters final value
Increment for counter
18 } // end class WhileCounter 1 2 3 4 5 6 7 8 9 10
2005 Pearson Education, Inc. All rights reserved.
Common Programming Error 5.1
Because floating-point values may be approximate, controlling loops with floatingpoint variables may result in imprecise counter values and inaccurate termination tests.
2005 Pearson Education, Inc. All rights reserved.
Error-Prevention Tip 5.1
Control counting loops with integers.
2005 Pearson Education, Inc. All rights reserved.
10
Good Programming Practice 5.1
Place blank lines above and below repetition and selection control statements, and indent the statement bodies to enhance readability.
2005 Pearson Education, Inc. All rights reserved.
11
Software Engineering Observation 5.1
Keep it simple remains good advice for most of the code you will write.
2005 Pearson Education, Inc. All rights reserved.
12
5.3 for Repetition Statement
Handles counter-controlled-repetition details
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12
// Fig. 5.2: [Link] // Counter-controlled repetition with the for repetition statement. public class ForCounter { public static void main( String args[] ) { // for statement header includes initialization, // loop-continuation condition and increment for ( int counter = 1; counter <= 10; counter++ ) [Link]( "%d ", counter );
13
Outline
[Link]
Line 10 int counter = 1; Line 10 counter <= 10; Line 10 counter++;
13 [Link](); // output a newline 14 } // end main 15 } // end class ForCounter Control-variable name is counter 1 2 3 4 5 6 7 8 9 10 Control-variable initial value is 1
Increment for counter
Condition tests for counters final value
2005 Pearson Education, Inc. All rights reserved.
14
Common Programming Error 5.2
Using an incorrect relational operator or an incorrect final value of a loop counter in the loop-continuation condition of a repetition statement can cause an off-by-one error.
2005 Pearson Education, Inc. All rights reserved.
15
Good Programming Practice 5.2
Using the final value in the condition of a while or for statement and using the <= relational operator helps avoid off-by-one errors. For a loop that prints the values 1 to 10, the loop-continuation condition should be counter <= 10 rather than counter < 10 (which causes an off-by-one error) or counter < 11 (which is correct). Many programmers prefer so-called zero-based counting, in which to count 10 times, counter would be initialized to zero and the loop-continuation test would be counter < 10.
2005 Pearson Education, Inc. All rights reserved.
16
Fig. 5.3 | for statement header components.
2005 Pearson Education, Inc. All rights reserved.
17
5.3 for Repetition Statement (Cont.)
for ( initialization; loopContinuationCondition; increment ) statement; can usually be rewritten as:
initialization; while ( loopContinuationCondition ) { statement; increment; }
2005 Pearson Education, Inc. All rights reserved.
18
Common Programming Error 5.3
Using commas instead of the two required semicolons in a for header is a syntax error.
2005 Pearson Education, Inc. All rights reserved.
19
Common Programming Error 5.4
When a for statements control variable is declared in the initialization section of the fors header, using the control variable after the fors body is a compilation error.
2005 Pearson Education, Inc. All rights reserved.
20
Performance Tip 5.1
There is a slight performance advantage to preincrementing, but if you choose to postincrement because it seems more natural (as in a for header), optimizing compilers will generate Java bytecode that uses the more efficient form anyway.
2005 Pearson Education, Inc. All rights reserved.
21
Good Programming Practice 5.3
In the most cases, preincrementing and postincrementing are both used to add 1 to a variable in a statement by itself. In these cases, the effect is exactly the same, except that preincrementing has a slight performance advantage. Given that the compiler typically optimizes your code to help you get the best performance, use the idiom with which you feel most comfortable in these situations.
2005 Pearson Education, Inc. All rights reserved.
22
Common Programming Error 5.5
Placing a semicolon immediately to the right of the right parenthesis of a for header makes that fors body an empty statement. This is normally a logic error.
2005 Pearson Education, Inc. All rights reserved.
23
Error-Prevention Tip 5.2
Infinite loops occur when the loop-continuation condition in a repetition statement never becomes false. To prevent this situation in a countercontrolled loop, ensure that the control variable is incremented (or decremented) during each iteration of the loop. In a sentinel-controlled loop, ensure that the sentinel value is eventually input.
2005 Pearson Education, Inc. All rights reserved.
24
Error-Prevention Tip 5.3
Although the value of the control variable can be changed in the body of a for loop, avoid doing so, because this practice can lead to subtle errors.
2005 Pearson Education, Inc. All rights reserved.
25
Fig. 5.4 | UML activity diagram for the for statement in Fig. 5.2.
2005 Pearson Education, Inc. All rights reserved.
26
5.4 Examples Using the for Statement
Varying control variable in for statement
Vary control variable from 1 to 100 in increments of 1
for ( int i = 1; i <= 100; i++ )
Vary co ntrol variable from 100 to 1 in increments of 1
for ( int i = 100; i >= 1; i-- )
Vary control variable from 7 to 77 in increments of 7
for ( int i = 7; i <= 77; i += 7 )
Vary control variable from 20 to 2 in decrements of 2
for ( int i = 20; i >= 2; i -= 2 )
Vary control variable over the sequence: 2, 5, 8, 11, 14, 17, 20
for ( int i = 2; i <= 20; i += 3 )
Vary control variable over the sequence: 99, 88, 77, 66, 55, 44, 33, 22, 11, 0
for ( int i = 99; i >= 0; i -= 11 )
2005 Pearson Education, Inc. All rights reserved.
27
Common Programming Error 5.6
Not using the proper relational operator in the loopcontinuation condition of a loop that counts downward (e.g., using i <= 1 instead of i >= 1 in a loop counting down to 1) is usually a logic error.
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Fig. 5.5: [Link] // Summing integers with the for statement. public class Sum { public static void main( String args[] ) { int total = 0; // initialize total // total even integers from 2 through 20 for ( int number = 2; number <= 20; number += 2 ) total += number; [Link]( "Sum is %d\n", total ); // display results
28
Outline
[Link]
Line 11
15 } // end main 16 } // end class Sum Sum is 110
increment number by 2 each iteration
2005 Pearson Education, Inc. All rights reserved.
5.4 Examples Using the for Statement (Cont.)
Initialization and increment expression can be comma-separated lists of expressions
E.g., lines 11-12 of Fig. 5.5 can be rewritten as
for ( int number = 2; number <= 20; total += number, number += 2 ) ; // empty statement
29
2005 Pearson Education, Inc. All rights reserved.
30
Good Programming Practice 5.4
Limit the size of control statement headers to a single line if possible.
2005 Pearson Education, Inc. All rights reserved.
31
Good Programming Practice 5.5
Place only expressions involving the control variables in the initialization and increment sections of a for statement. Manipulations of other variables should appear either before the loop (if they execute only once, like initialization statements) or in the body of the loop (if they execute once per iteration of the loop, like increment or decrement statements).
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Fig. 5.6: [Link] // Compound-interest calculations with for. public class Interest { public static void main( String args[] { double amount; // amount on deposit at end of each year double principal = 1000.0; // initial amount before interest double rate = 0.05; // interest rate // display headers [Link]( "%s%20s\n", "Year", "Amount on deposit" );
32
Outline
Java treats floating-points as type double )
[Link]
(1 of 2)
Line 8 Line 13 Second string is right justified and displayed with a field width of 20
2005 Pearson Education, Inc. All rights reserved.
15 16 17 18 19 20 21 22 23 24
// calculate amount on deposit for each of ten years for ( int year = 1; year <= 10; year++ ) { // calculate new amount for specified year amount = principal * [Link]( 1.0 + rate, year ); // display the year and the amount [Link]( "%4d%,20.2f\n", year, amount ); } // end for } // end main
33
Outline
Calculate amount with for statement
[Link]
(2 of 2)
25 } // end class Interest Year 1 2 3 4 5 6 7 8 9 10 Amount on deposit 1,050.00 1,102.50 1,157.63 1,215.51 1,276.28 1,340.10 1,407.10 1,477.46 1,551.33 1,628.89
Use the comma (,) formatting flag to display the amount with a thousands separator Lines 16-23 Line 22
Program output
2005 Pearson Education, Inc. All rights reserved.
5.4 Examples Using the for Statement (Cont.)
Formatting output
Field width Minus sign (-) formatting flag
Comma (,) formatting flag
34
static method
[Link]( arguments)
2005 Pearson Education, Inc. All rights reserved.
35
Good Programming Practice 5.6
Do not use variables of type double (or float) to perform precise monetary calculations. The imprecision of floating-point numbers can cause errors that will result in incorrect monetary values. In the exercises, we explore the use of integers to perform monetary calculations. [Note: Some thirdparty vendors provide for-sale class libraries that perform precise monetary calculations. In addition, the Java API provides class [Link] for performing calculations with arbitrary precision floating-point values.]
2005 Pearson Education, Inc. All rights reserved.
36
Performance Tip 5.2
In loops, avoid calculations for which the result never changes such calculations should typically be placed before the loop. [Note: Many of todays sophisticated optimizing compilers will place such calculations outside loops in the compiled code.]
2005 Pearson Education, Inc. All rights reserved.
37
5.5 dowhile Repetition Statement
dowhile structure
Similar to while structure
Tests loop-continuation after performing body of loop
i.e., loop body always executes at least once
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Fig. 5.7: [Link] // do...while repetition statement. public class DoWhileTest { public static void main( String args[] ) { int counter = 1; // initialize counter do { [Link]( "%d ++counter; ", counter );
38
Outline
[Link]
Line 8 Lines 10-14
} while ( counter <= 10 ); // end do...while [Link](); // outputs a newline } // end main
18 } // end class DoWhileTest 1 2 3 4 5 6 7 8 9 10
Program output
2005 Pearson Education, Inc. All rights reserved.
39
Fig. 5.8 | do...while repetition statement UML activity diagram.
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// Fig. 5.9: [Link] // GradeBook class uses switch statement to count A, B, C, D and F grades. import [Link]; // program uses class Scanner public class GradeBook { private String courseName; // name of course this GradeBook represents private int total; // sum of grades private int gradeCounter; // number of grades entered private int aCount; // count of A grades private int bCount; // count of B grades private int cCount; // count of C grades private int dCount; // count of D grades private int fCount; // count of F grades // constructor initializes courseName; // int instance variables are initialized to 0 by default public GradeBook( String name ) { courseName = name; // initializes courseName total = 100; aCount = 0; int grade = 50; } // end constructor // method to set the course name public void setCourseName( String name ) { courseName = name; // store the course name } // end method setCourseName
40
Outline
[Link]
(1 of 5) Lines 8-14
21 22 23 24 25 26 27 28
2005 Pearson Education, Inc. All rights reserved.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
// method to retrieve the course name public String getCourseName() { return courseName; } // end method getCourseName // display a welcome message to the GradeBook user public void displayMessage() { // getCourseName gets the name of the course [Link]( "Welcome to the grade book for\n%s!\n\n", getCourseName() ); } // end method displayMessage // input arbitrary number of grades from user public void inputGrades() { Scanner input = new Scanner( [Link] ); int grade; // grade entered by user [Link]( "%s\n%s\n %s\n %s\n",
41
Outline
[Link]
(2 of 5)
Lines 50-54
Display prompt
"Enter the integer grades in the range 0-100.", "Type the end-of-file indicator to terminate input:", "On UNIX/Linux/Mac OS X type <ctrl> d then press Enter", "On Windows type <ctrl> z then press Enter" );
2005 Pearson Education, Inc. All rights reserved.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
// loop until user enters the end-of-file indicator while ( [Link]() ) { grade = [Link](); // read grade total += grade; // add grade to total ++gradeCounter; // increment number of grades // call method to increment appropriate counter incrementLetterGradeCounter( grade ); } // end while } // end method inputGrades // add 1 to appropriate counter for specified grade public void incrementLetterGradeCounter( int numericGrade ) { // determine which grade was entered switch ( numericGrade / 10 ) { case 9: // grade was between 90 case 10: // and 100 ++aCount; // increment aCount break; // necessary to exit switch case 8: // grade was between 80 and 89 ++bCount; // increment bCount break; // exit switch
42
Outline
[Link]
(3 of 5) Line 57 Line 72 controlling expression Lines 72-94
2005 Pearson Education, Inc. All rights reserved.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
case 7: // grade was between 70 and 79 ++cCount; // increment cCount break; // exit switch case 6: // grade was between 60 and 69 ++dCount; // increment dCount break; // exit switch default: // grade was less than 60 ++fCount; // increment fCount break; // optional; will exit switch anyway } // end switch } // end method incrementLetterGradeCounter // display a report based on the grades entered by user public void displayGradeReport() { [Link]( "\nGrade Report:" ); // if user entered at least one grade... if ( gradeCounter != 0 ) { // calculate average of all grades entered double average = (double) total / gradeCounter;
43
Outline
[Link]
(4 of 5)
Line 91 default case
2005 Pearson Education, Inc. All rights reserved.
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
// output summary of results [Link]( "Total of the %d grades entered is %d\n", gradeCounter, total ); [Link]( "Class average is %.2f\n", average ); [Link]( "%s\n%s%d\n%s%d\n%s%d\n%s%d\n%s%d\n", "Number of students who received each grade:", "A: ", aCount, "B: ", bCount, "C: ", cCount, "D: ", dCount, } // end if else // no grades were entered, so output appropriate message [Link]( "No grades were entered" ); } // end method displayGradeReport // display number of A grades // display number of B grades // display number of C grades // display number of D grades
44
Outline
[Link]
(5 of 5)
"F: ", fCount ); // display number of F grades
123 } // end class GradeBook
2005 Pearson Education, Inc. All rights reserved.
45
Common Programming Error 5.7
Forgetting a break statement when one is needed in a switch is a logic error.
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Fig. 5.10: [Link] // Create GradeBook object, input grades and display grade report. public class GradeBookTest { public static void main( String args[] ) { // create GradeBook object myGradeBook and // pass course name to constructor GradeBook myGradeBook = new GradeBook( "CS101 Introduction to Java Programming" );
46
Outline
[Link]
Call GradeBook public(1 of 2) methods to count grades Lines 13-15
[Link](); // display welcome message [Link](); // read grades from user
15 [Link](); // display report based on grades 16 } // end main 17 } // end class GradeBookTest
2005 Pearson Education, Inc. All rights reserved.
Welcome to the grade book for CS101 Introduction to Java Programming! Enter the integer grades in the range 0-100. Type the end-of-file indicator to terminate input: On UNIX/Linux/Mac OS X type <ctrl> d then press Enter On Windows type <ctrl> z then press Enter 99 92 45 57 63 71 76 85 90 100 ^Z Grade Report: Total of the 10 grades entered is 778 Class average is 77.80 Number of students who received each grade: A: 4 B: 1 C: 2 D: 1 F: 2
47
Outline
[Link]
(2 of 2)
Program output
2005 Pearson Education, Inc. All rights reserved.
48
Software Engineering Observation 5.2
Provide a default case in switch statements. Including a default case focuses you on the need to process exceptional conditions.
2005 Pearson Education, Inc. All rights reserved.
49
Fig. 5.11 | switch multiple-selection statement UML activity diagram with break statements.
2005 Pearson Education, Inc. All rights reserved.
5.6 switch Multiple-Selection Statement (Cont.)
Expression in each case
Constant integral expression
Combination of integer constants that evaluates to a constant integer value
50
Character constant
E.g., A, 7 or $
Constant variable
Declared with keyword final
2005 Pearson Education, Inc. All rights reserved.
51
5.7 break and continue Statements
break/continue
Alter flow of control
break statement
Causes immediate exit from control structure
Used in while, for, dowhile or switch statements
continue statement
Skips remaining statements in loop body Proceeds to next iteration
Used in while, for or dowhile statements
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// Fig. 5.12: [Link] // break statement exiting a for statement. public class BreakTest { public static void main( String args[] ) Loop 10 times { int count; // control variable also used after Exit loop for terminates statement (break) for ( count = 1; count <= 10; count++ ) // loop 10 times { if ( count == 5 ) // if count is 5, break; // terminate loop [Link]( "%d ", count ); } // end for [Link]( "\nBroke out of loop at count = %d\n", count ); } // end main } // end class BreakTest
52
Outline
when count equals 5
[Link] Line 9 Lines 11-12
1 2 3 4 Broke out of loop at count = 5
Program output
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// Fig. 5.13: [Link] // continue statement terminating an iteration of a for statement. public class ContinueTest { public static void main( String args[] ) {
53
Outline
Loop 10 times
[Link]
Skip line and proceed to for ( int count = 1; count <= 10; count++ ) // loop 10 12 times { line 7 when count equals 5 if ( count == 5 ) // if count is 5, continue; // skip remaining code in loop
[Link]( "%d ", count ); } // end for
Line 7 Lines 9-10
15 [Link]( "\nUsed continue to skip printing 5" ); 16 } // end main 17 } // end class ContinueTest 1 2 3 4 6 7 8 9 10 Used continue to skip printing 5
Program output
2005 Pearson Education, Inc. All rights reserved.
54
Software Engineering Observation 5.3
Some programmers feel that break and continue violate structured programming. Since the same effects are achievable with structured programming techniques, these programmers do not use break or continue.
2005 Pearson Education, Inc. All rights reserved.
55
5.8 Logical Operators
Logical operators
Allows for forming more complex conditions
Combines simple conditions
Java logical operators
&& (conditional AND)
|| (conditional OR) & | (boolean logical AND) (boolean logical inclusive OR)
^
!
(boolean logical exclusive OR)
(logical NOT)
2005 Pearson Education, Inc. All rights reserved.
56
5.8 Logical Operators (Cont.)
Conditional AND (&&) Operator
Consider the following if statement
if ( gender == FEMALE && age >= 65 ) ++seniorFemales;
Combined condition is true
if and only if both simple conditions are true
Combined condition is false
if either or both of the simple conditions are false
2005 Pearson Education, Inc. All rights reserved.
57
expression1 expression2 expression1 && expression2
false false true true false true false true False False False True
Fig. 5.14 | && (conditional AND) operator truth table.
2005 Pearson Education, Inc. All rights reserved.
58
5.8 Logical Operators (Cont.)
Conditional OR (||) Operator
Consider the following if statement
if ( ( semesterAverage >= 90 ) || ( finalExam >= 90 ) [Link]( Student grade is A );
Combined condition is true
if either or both of the simple condition are true
Combined condition is false
if both of the simple conditions are false
2005 Pearson Education, Inc. All rights reserved.
59
expression1
false false true true
expression2
false true false true
expression1 || expression2
false true true true
Fig. 5.15 | || (conditional OR) operator truth table.
2005 Pearson Education, Inc. All rights reserved.
60
5.8 Logical Operators (Cont.)
Short-Circuit Evaluation of Complex Conditions
Parts of an expression containing && or || operators are evaluated only until it is known whether the condition is true or false E.g., ( gender == FEMALE ) && ( age >= 65 )
Stops immediately if gender is not equal to FEMALE
2005 Pearson Education, Inc. All rights reserved.
61
Common Programming Error 5.8
In expressions using operator &&, a conditionwe will call this the dependent condition-may require another condition to be true for the evaluation of the dependent condition to be meaningful. In this case, the dependent condition should be placed after the other condition, or an error might occur. For example, in the expression ( i != 0 ) && ( 10 / i == 2 ), the second condition must appear after the first condition, or a divideby-zero error might occur.
2005 Pearson Education, Inc. All rights reserved.
62
5.8 Logical Operators (Cont.)
Boolean Logical AND (&) Operator
Works identically to &&
Except & always evaluate both operands
Boolean Logical OR (|) Operator
Works identidally to ||
Except | always evaluate both operands
2005 Pearson Education, Inc. All rights reserved.
63
Error-Prevention Tip 5.4
For clarity, avoid expressions with side effects in conditions. The side effects may look clever, but they can make it harder to understand code and can lead to subtle logic errors.
2005 Pearson Education, Inc. All rights reserved.
64
5.8 Logical Operators (Cont.)
Boolean Logical Exclusive OR (^)
One of its operands is true and the other is false
Evaluates to true
Both operands are true or both are false
Evaluates to false
Logical Negation (!) Operator
Unary operator
2005 Pearson Education, Inc. All rights reserved.
65
expression1
false false true true
expression2
false true false true
expression1 ^ expression2
false true true false
Fig. 5.16 | ^ (boolean logical exclusive OR) operator truth table.
2005 Pearson Education, Inc. All rights reserved.
66
expression
false true
!expression
true false
Fig. 5.17 |! (logical negation, or logical NOT) operator truth table.
2005 Pearson Education, Inc. All rights reserved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// Fig. 5.18: [Link] // Logical operators. public class LogicalOperators { public static void main( String args[] ) { // create truth table for && (conditional AND) operator [Link]( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Conditional AND (&&)", "false && false", ( false && false ), "false && true", ( false && true ), "true && false", ( true && false ), "true && true", ( true && true ) ); // create truth table for || (conditional OR) operator [Link]( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Conditional OR (||)", "false || false", ( false || false ), "false || true", ( false || true ), "true || false", ( true || false ), "true || true", ( true || true ) ); // create truth table for & (boolean logical AND) operator [Link]( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical AND (&)", "false & false", ( false & false ), "false & true", ( false & true ), "true & false", ( true & false ), "true & true", ( true & true ) );
67
Outline
LogicalOperators. java
(1 of 3) Lines 9-13 Conditional AND truth table Lines 16-20
Lines 23-27 Conditional OR truth table
Boolean logical AND truth table
2005 Pearson Education, Inc. All rights reserved.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
// create truth table for | (boolean logical inclusive OR) operator [Link]( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical inclusive OR (|)", "false | false", ( false | false ), "false | true", ( false | true ), "true | false", ( true | false ), "true | true", ( true | true ) ); // create truth table for ^ (boolean logical exclusive OR) operator [Link]( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logical exclusive OR (^)", "false ^ false", ( false ^ false ), "false ^ true", ( false ^ true ), "true ^ false", ( true ^ false ), "true ^ true", ( true ^ true ) ); // create truth table for ! (logical negation) operator [Link]( "%s\n%s: %b\n%s: %b\n", "Logical NOT (!)", "!false", ( !false ), "!true", ( !true ) ); } // end main
68
Outline
Boolean LogicalOperators. logical inclusive ORjava truth table (2 of 3) Lines 30-35 Boolean logical exclusive OR truth table Lines 38-43
Lines 46-47 Logical negation truth table
49 } // end class LogicalOperators
2005 Pearson Education, Inc. All rights reserved.
Conditional AND (&&) false && false: false false && true: false true && false: false true && true: true Conditional OR (||) false || false: false false || true: true true || false: true true || true: true Boolean logical AND (&) false & false: false false & true: false true & false: false true & true: true Boolean logical inclusive OR (|) false | false: false false | true: true true | false: true true | true: true Boolean logical exclusive OR (^) false ^ false: false false ^ true: true true ^ false: true true ^ true: false Logical NOT (!) !false: true !true: false
69
Outline
LogicalOperators. java
(3 of 3) Program output
2005 Pearson Education, Inc. All rights reserved.
70
Operators
++ -++ (type) * / + < <= == != & ^ | && || ?: = += + % > >= !
Associativity Type
right to left right to left left to right left to right left to right left to right left to right left to right left to right left to right left to right right to left right to left unary postfix unary prefix multiplicative additive relational equality boolean logical AND boolean logical exclusive OR boolean logical inclusive OR conditional AND conditional OR conditional assignment
-=
*=
/=
%=
Fig. 5.19 | Precedence/associativity of the operators discussed so far.
2005 Pearson Education, Inc. All rights reserved.