Download presentation
Presentation is loading. Please wait.
Published byToby Wade Modified over 9 years ago
1
Week 4 - Monday
2
What did we talk about last time? Wrapper classes if statements
6
So far we have only considered Java programs that do one thing after another, in sequence Our programs have not had the ability to choose between different possibilities Now, they will!
7
The if -statement: x is small will only print out if x is less than 5 In this case, we know that it is, but x could come from user input or a file or elsewhere int x = 4; if( x < 5 ) System.out.println("x is small!"); int x = 4; if( x < 5 ) System.out.println("x is small!");
8
The if part Any boolean expression Any single executable statement if( condition ) statement;
10
Any statement that evaluates to a boolean is legal Examples: x == y true Character.isDigit('r') s.equals("Help me!") && (z < 4)
11
The most common condition you will find is a comparison between two things In Java, that comparison can be: == equals != does not equal < less than <= less than or equal to > greater than >= greater than or equal to These are called relational operators
12
You can use the == operator to compare any two things of the same type Different numerical types can be compared as well ( 3 == 3.0 ) Be careful with double types, 0.33333333 is not equal to 0.33333332 int x = 3; if( x == 4 ) System.out.println("This doesn't print"); int x = 3; if( x == 4 ) System.out.println("This doesn't print");
13
Any place you could have used the == operator, you can use the != operator If == gives true, the != operator will always give false, and vice versa If you want to negate a condition, you can always use the ! as a not is the same as if( x != 4 ) if( !(x == 4) )
14
Remember, a single equal sign ( = ) is the assignment operator (think of a left-pointing arrow) A double equals ( == ) is a comparison operator int y = 10; if( y = 6 ) //compiler error! int y = 10; if( y = 6 ) //compiler error! boolean b = false; if( b = false ) //no error but wrong boolean b = false; if( b = false ) //no error but wrong
15
Inequality is very important in programming You may want to take an action as long as a value is below a certain threshold For example, you might want to keep bidding at an auction until the price is greater than what you can afford Watch for strict inequality ( < ) vs. non-strict inequality ( <= ) if( x <= 4 ) System.out.println("x is less than 5"); if( x <= 4 ) System.out.println("x is less than 5");
16
Just like less than or equal to, except the opposite Note that (because of the All-Powerful Math Gods) the opposite of and the opposite of >= is < Thus, !( x y ) !( x >= y ) is equivalent to ( x < y )
18
Sometimes you have to make a decision If a condition is true, you go one way, if not, you go the other For example: If I pass CS121, ▪ Then I throw a kegger to celebrate Otherwise, ▪ I punch Dr. Wittman in the face
19
Notice the nature of this kind of condition Both outcomes cannot happen Either a kegger gets thrown or Dr. Wittman gets punched in the face For these situations, we use the else construct
20
Two different outcomes if( condition ) statement1; else statement2;
21
Scanner in = new Scanner(System.in); int balance = in.nextInt(); if( balance < 0 ) System.out.println("You are in debt!"); else System.out.println("You have a $" + balance); Scanner in = new Scanner(System.in); int balance = in.nextInt(); if( balance < 0 ) System.out.println("You are in debt!"); else System.out.println("You have a $" + balance);
23
No problem Use braces to treat a group of statements like a single statement if( x == 4 ) { System.out.println("I hate 4"); System.out.println("Let's change x."); x = 10; } if( x == 4 ) { System.out.println("I hate 4"); System.out.println("Let's change x."); x = 10; }
24
if( condition ) { statement1; statement2; … statementn; } A whole bunch of statements
25
Sometimes you want to make one set of decisions based on another set of decisions if -statements can be nested inside the bodies of other if -statements You can put if -statements inside of if - statements inside of if -statements… going arbitrarily deep
26
if( condition1 ) { statement1; if( condition2 ) { if( condition3 ) statement2; … }
27
For the next example, recall the 4 quadrants of the Cartesian coordinate system x-x y -y (0,0) 1 2 34
28
Find which quadrant the point (x,y) is in if( x >= 0.0 ) { if( y >= 0.0 ) System.out.println("Quadrant 1"); else System.out.println("Quadrant 4"); } else { if( y >= 0.0 ) System.out.println("Quadrant 2"); else System.out.println("Quadrant 3"); } if( x >= 0.0 ) { if( y >= 0.0 ) System.out.println("Quadrant 1"); else System.out.println("Quadrant 4"); } else { if( y >= 0.0 ) System.out.println("Quadrant 2"); else System.out.println("Quadrant 3"); }
29
You can list a sequence of exclusive possibilities using nesting: if( index == 1 ) System.out.println("First"); else if( index == 2 ) System.out.println("Second"); else if( index == 3 ) System.out.println("Third"); else System.out.println(index + "th"); if( index == 1 ) System.out.println("First"); else if( index == 2 ) System.out.println("Second"); else if( index == 3 ) System.out.println("Third"); else System.out.println(index + "th");
30
A block of code is treated just like one statement A whole if-else is treated the same if( … ) statement1; else if( … ) statement2; else statement3; if( … ) statement1; else if( … ) statement2; else statement3; if( … ) { statement1; } else { if( … ) statement2; else statement3; } if( … ) { statement1; } else { if( … ) statement2; else statement3; } =
32
Now you are controlling the flow of execution in your program There is a wider range of mistakes you can make when giving instructions Huge chunks of code can be executed or skipped by mistake Here are a few things to watch out for
33
Remember that an if -statement is not an executable statement It does not end with a semicolon if( balance < 0 ); // empty statement { // this block always runs System.out.println("You owe a fee!"); balance -= 15; } if( balance < 0 ); // empty statement { // this block always runs System.out.println("You owe a fee!"); balance -= 15; }
34
In some languages, indentation actually matters Java ignores whitespace "Fight!" prints no matter what if( enemies > 2 ) System.out.println("Run away!"); else defense = true; System.out.println("Fight!"); if( enemies > 2 ) System.out.println("Run away!"); else defense = true; System.out.println("Fight!");
35
It’s easy to make logical errors when writing conditions If an airline allows two or fewer bags on the plane, someone might code that as: But this is too restrictive. It should be: if( bags < 2 ) // only allows 1 or 0 boarding = true; if( bags < 2 ) // only allows 1 or 0 boarding = true; if( bags <= 2 ) boarding = true; if( bags <= 2 ) boarding = true;
36
Sometimes it’s easy to get a condition backwards Try not to assume you wrote the condition correctly Always double check if( number % 3 == 0 ) System.out.println("Not divisible by 3!"); else System.out.println("Divisible by 3!"); if( number % 3 == 0 ) System.out.println("Not divisible by 3!"); else System.out.println("Divisible by 3!");
38
Sometimes you probably break the speed limit But, there's one speed limit you can never break The speed of light c is about 3 x 10 8 m/s Given a variable named speed of type double, what's an if - statement that will print an error message if speed is larger than c?
40
Examples switch statements
41
Keep reading Chapter 4 of the textbook Keep working on Project 1 (due this Friday) Exam 1 is next Monday
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.