Title: Lesson 3: Conditions and Loops
1Lesson 3 Conditions and Loops
2The if Statement
- The Java if statement has the following syntax
- if (boolean-condition)
- statement
- If the Boolean condition is true, the statement
is executed if it is false, the statement is
skipped - This provides basic decision making capabilities
3Tempreture
class Temperature static final int THRESHOLD
65 public static void main(String args)
InputRequestor input new
InputRequestor() int temperature
input.requestInt(Enter the temperature)
System.out.println(Current temperature
temperature) if (temperature lt THRESHOLD)
System.out.println(Its cold in here!)
4If statement flow diagram
condition
true
statement
5Boolean Expressions
- The condition of an if statement must evaluate to
a true or false result - Java has several equality and relational
operators -
- More complex Boolean expressions are also
possible
Operator Meaning
equal to
! not equal to
lt less than
lt less than or equal to
gt greater than
gt greater than or equal to
6Block Statements
- Several statements can be grouped together into a
block statement - Blocks are delimited by braces
- A block statement can be used wherever a
statement is called for in the Java syntax - if (boolean-condition)
- statement1
- statement2
-
-
7Example - Temperature2
class Temperature2 static final int THRESHOLD
65 public static void main(String args)
InputRequestor input new
InputRequestor() int temperature
input.requestInt(Enter the temperature)
System.out.println(Current temperature
temperature) if (temperature lt THRESHOLD)
System.out.println(Its cold in
here!) System.out.println(But well
survive.)
8If .. Else Statement
- An else clause can be added to an if statement to
make it an if-else statement - if (condition)
- statement1
- else
- statement2
- If the condition is true, statement1 is executed
if the condition is false, statement2 is
executed
9Example - Temperature3
class Temperature3 static final int
FREEZING_POINT 32 public static void
main(String args) InputRequestor
input new InputRequestor() int
temperature input.requestInt(Enter
temperature) if (temperature lt
FREEZING_POINT) System.out.println(I
ts freezing!) else
System.out.println(Above freezing.)
10If/else flow diagram
- if (condition)
- statement1
- else
- statement2
condition
true
statement2
statement1
11Nested If statements
- Since an If statement is a statement, it can
appear inside another if statement. - if (condition1)
- if (condition2)
- statement
- It can also appear in an else clause
- if (condition1)
- statement1
- else if (condition2)
- statement2
12Nested If Example
// Reads 2 integers and compares them class
CompareExample public static void
main(String args) InputRequestor input
new InputRequestor() int a
input.requestInt(First number) int b
input.requestInt(Second number) if (a !
b) if (a gt b) System.out.println(a
is greater) else
System.out.println(b is greater) else
System.out.println(the numbers are
equal)
13Checking your Input
- When requesting input from the user, keep in mind
that the input may be invalid. - It is good practice to check the validity of user
input -
int numberOfItems input.requestInt(Enter
number of items) if (numberOfItems lt 0)
System.out.println( Number of items must
be positive!) else double price
numberOfItems ITEM_PRICE
System.out.println(The total price is
price)
14Lesson 3 Conditions and Loops
- Unit 2 Boolean Expressions
15Logical Operators
- Boolean expressions may be combined using logical
operators - There are three logical operators in Java
- They all take Boolean operands and produce
Boolean results - Logical NOT is unary (one operand), but logical
AND and OR are binary (two operands)
Operator Operation
! Logical NOT
Logical AND
Logical OR
16Logical NOT
- The logical NOT is also called logical negation
or logical complement - If a is true, !a is false if a is false, then
!a is true - Logical expressions can be shown using truth
tables
a !a
false true
true false
17Logical AND
- The expression a b is true if both a and b are
true, and false otherwise - Truth tables show all possible combinations of
all terms
a b a b
false false false
false true false
true false false
true true true
18Logical OR
- The expression a b is true if a or b or both
are true, and false otherwise
a b a b
false false false
false true true
true false true
true true true
19Logical Operators
- Logical operators are used to form more complex
logical expressions -
- Logical operators have precedence relationships
between themselves and other operators
if (alt1 a2!0) System.out.println(
The input should be an even even number!)
20Logical Operators
- Full expressions can be evaluated using truth
tables
a lt 1 a2!0 alt1 a20
false false false
false true false
true false false
true true true
21Boolean variables
- Boolean expressions can be assigned to Boolean
variables - Boolean variables are Boolean expressions
-
boolean b, c b (x gt 17) c (xgt17) (xlt60)
boolean b, c b (x gt 17) c b (xlt60) if
(c) System.out.println(x is in range)
22Example - RightTriangle
// Receives the length of the edges of a
triangle // and determine if this is a right
triangle class RightTriangle public static
void main(String args) InputRequestor
input new InputRequestor() float a
input.requestInt(Edge1) float b
input.requestInt(Edge2) float c
input.requestInt(Hypotenuse) boolean test
aabb cc if (test)
System.out.println(Its a right triangle)
else System.out.println(Its not a right
triangle)
23Lesson 3 conditions and loops
- Unit C3 The while Statement
24The while statement
- A while statement has the following syntax
- while (condition)
- statement
- If the condition is true, the statement is
executed then the condition is evaluated again - The statement is executed over and over until the
condition becomes false - If the condition of a while statement is false
initially, the statement is never executed - Therefore, we say that a while statement executes
zero or more times
25While statement flow diagram
- while (condition)
- statement
condition
true
statement
26Example - Counter
// Counts from 1 to 5 class Counter static
final int LIMIT 5 public static void
main(String args) int count 1
while (count lt LIMIT) System.out.println(
count) count count 1
System.out.println(done)
27Examples - Factors
// Gets an integer and prints its factors class
FactorsExample public static void
main(String args) InputRequestor input
new InputRequestor() int a
input.requestInt(Enter a number) int i
1 System.out.println(The divisors of a
are) while (i lt a) if (ai 0)
System.out.println(i) i
i 1
28Infinite Loops
- The body of a while loop must eventually make the
condition false - If not, it is an infinite loop, which will
execute until the user interrupts the program - This is a common type of logical error --
always double check that your loops will
terminate normally
29Example - Forever
// This program contains an infinite loop class
Forever static final int LIMIT 25
public static void main(String args) int
count 1 while (count lt LIMIT)
System.out.println(count) count count -
1
30Lesson 3 conditions and loops
31The Conditional Operator
- Java has a conditional operator that evaluates a
Boolean condition that determines which of two
expressions is evaluated - The result of the chosen expression is the result
of the entire conditional operator - Its syntax is
- condition ? expression1
- expression2
- If the condition is true, expression1 is
evaluated if it is false, expression2 is
evaluated
32The Conditional Operator
- It is similar to an if-else statement, except
that it is an expression that returns a value - For example
-
- If a is greater that b, then a is assigned to
max otherwise, b is assigned to max - The conditional operator is ternary, meaning it
requires three operands
int max (a gt b) ? a b
33The Conditional Operator
- Another example
- If count equals 1, "Dime" is printed, otherwise
"Dimes" is printed
System.out.println ("Your change is " count
((count 1) ? "Dime" "Dimes))
34Another Selection Statement
- The if and the if-else statements are selection
statements, allowing us to select which statement
to perform next based on some Boolean condition - Another selection construct, called the switch
statement, provides another way to choose the
next action - The switch statement evaluates an expression,
then attempts to match the result to one of a
series of values - Execution transfers to statement list associated
with the first value that matches
35The switch Statement
- The syntax of the switch statement is
- switch (expression)
- case value1
- statement-list1
- case value2
- statement-list2
- case
-
36The switch Statement
- The expression must evaluate to an integral
value, such as an integer or character - The break statement is usually used to terminate
the statement list of each case, which causes
control to jump to the end of the switch
statement - A default case can be added to the end of the
list of cases, and will execute if no other case
matches
37The switch Statement
/ A client that enables you to connect to
the bank server and make remote banking
operations... / public class BankClient
public static final int VIEW_BALANCE 1
public static final int VIEW_SAVINGS 2
public static final int CASH_TRANSFER 3
public static final int VIEW_LAST_OPERATIONS
4 // ...
38The switch Statement
// Inside the main loop of the client int
option InputRequestor.requentInt(Enter
your choice) switch(option) case
VIEW_BALANCE showBalance() break
case VIEW_SAVINGS showSavings() break
default output.showMessage(No such
option!)
39Lesson 3 conditions and loops
- Unit 5 Shorthand Operators
40Shorthand Operators
- Many operations are very commonly used
- Java has shorthand notations for these
- increment and decrement operators
- assignment operators
41The Increment and Decrement Operators
- The increment operator () adds one to its
integer or floating point operand - The decrement operator (--) subtracts one
- The statement
- is essentially equivalent to
-
count
count count 1
42The Increment and Decrement Operators
- The increment and decrement operators can be
applied in prefix (before the variable) or
postfix (after the variable) form - When used alone in a statement, the prefix and
postfix forms are basically equivalent. That is, -
- is equivalent to
-
count
count
43The Increment and Decrement Operators
- When used in a larger expression, the prefix and
postfix forms have a different effect - In both cases the variable is incremented
(decremented) - But the value used in the larger expression
depends on the form
Expressions Operation Value Of expression
count add 1 old value
count add 1 new value
count-- subtract 1 old value
--count subtract 1 new value
44The Increment and Decrement Operators
- If count currently contains 45, then
-
- assigns 45 to total and 46 to count
- If count currently contains 45, then
-
- assigns the value 46 to both total and count
total count
total count
45The Increment and Decrement Operators
- If sum contains 25, what does this statement
print? -
- Prints the following result
- 25 27 27 27
- sum contains 26 after the line is complete
System.out.println (sum " "
sum " "
sum " " sum--)
46Assignment Operators
- Often we perform an operation on a variable, then
store the result back into that variable - Java provides assignment operators that simplify
that process - For example, the statement
-
- is equivalent to
-
sum value
sum sum value
47Assignment Operators
- There are many such assignment operators, always
written as op , such as
Operator Example Equivalent to
xy x x y
- x-y x x - y
xy x x y
/ x/y x x / y
xy x x y
48Assignment Operators
- The right hand side of an assignment operator can
be a complete expression - The entire right-hand expression is evaluated
first, then combined with the additional
operation - Therefore
- result / total-MIN
- is equivalent to
-
result / total-MIN
result result / (total-MIN)
49Lesson 3 conditions and loops
50More Repetition Constructs
- In addition to while loops, Java has two other
constructs used to perform repetition - the do statement
- the for statement
- Each loop type has its own unique characteristics
- You must choose which loop type to use in each
situation
51The do Statement
- The do statement has the following syntax
- do
- statement
- while (condition)
- The statement is executed until the condition
becomes false - It is similar to a while statement, except that
its termination condition is evaluated after the
loop body
52The do Statement
- The key difference between a do loop and a while
loop is that the body of the do loop will execute
at least once - If the condition of a while loop is false
initially, the body of the loop is never executed - Another way to put this is that a while loop will
execute zero or more times and a do loop will
execute one or more times
53Do Statement Example
// Gets an integer and prints its factors class
AvgExample public static void main(String
args) InputRequestor input new
InputRequestor() double x, sum0, count-1
do x input.RequestDouble(Next
number) sum x count
while (x ! 0) // 0 is a flag
indicating end of input
System.out.println(The average is sum/count)
54The do Statement flow diagram
55The for Statement
- Many loops have a common pattern, captured by the
for statement - The syntax of the for loop is
- for (intialization condition increment)
- statement
- This is equivalent to
- initialization
- while (condition)
- statement
- increment
-
56The for Statement examples
for (int count1 count lt 75 count)
System.out.println (count) for
(int num1 num lt max num num 2)
System.out.println (Next power of 2 num)
57The for Statement
- The initialization is always performed once
- The condition of a for statement is tested prior
to executing the loop body (like in the while
statement) - Therefore, a for loop will execute zero or more
times - For loops are well suited for cases where the
number of iterations is known beforehand - The increment is executed after each iteration of
the loop
58Omitting parts in a for Statement
- Each expression in the header of a for loop is
optional - If the initialization is left out, no
initialization is performed - If the condition is left out, it is always
considered to be true, and therefore makes an
infinite loop - If the increment is left out, no increment
operation is performed - Both semi-colons are always required
for () // an infinite loop
System.out.println (beep) // compute a
value count for ( count lt max count )
System.out.println (count)
59The for Statement flow diagram
60Multiplication Table Example
class MultiplicationTable public static void
main(String args) for(int j1 j lt 10
j) for(int k1 k lt 10 k)
System.out.print(jk) System.out.println()
61The break and continue statements
- The break statement, which we used with switch
statements, can also be used inside a loop - When the break statement is executed, control
jumps to the statement after the loop (the
condition is not evaluated again) - A similar construct, the continue statement, can
also be executed in a loop - When the continue statement is executed, control
jumps to the end of the loop and the condition is
evaluated
62Break and Continue Example
class AvgExample2 public static void
main(String args) InputRequestor in new
InputRequestor() double x, sum 0 count
0 while(true) x in.RequestDouble()
if (x 0) break if (x lt
0) System.out.println(Only positive
numbers!) continue sum
x count // continued on
next page
63Break and Continue Example (2)
System.out.println(The average is
sum/count)
64Why do We Need Indentation?
class Mystery public static void main(String
args) InputRequestor in new
InputRequestor() int dimension
in.requestInt(Please enter the
dimension) for (int j 0 j lt dimension j)
for (int k 1 k lt dimension - j k)
System.out.print(" ") for (int k 0 k lt
j k) System.out.print("")
System.out.println()