Week 3 - Friday
What did we talk about last time? Wrapper classes Examples if statements
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!
The if -statement: int x = 4; if( x < 5 ) { System.out.println("x is small!"); } 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
The if part Any boolean expression if( condition ){ statements; } Executable statements
A very natural if-then sort of relationship If the condition is true, then do something For example: If I win a million dollars, Then I’ll yodel like an insane Swiss monkey
Write a program that prompts the user for the secret password If they enter the word "eggplant", congratulate them for knowing the password
Any statement that evaluates to a boolean is legal Examples: x == y true Character.isDigit('r') s.equals("Help me!") && (z < 4)
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
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"); }
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 if( x != 4 ) is the same as if( !(x == 4) )
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! boolean b = false; if( b = false ) // no error but wrong
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 if( x <= 4 ) { System.out.println("x is less than 5"); } Watch for strict inequality ( < ) vs. non-strict inequality ( <= )
Just like less than or equal to, except the opposite Note that (because of the All-Powerful Math Gods) the opposite of <= is > and the opposite of >= is < Thus, !( x <= y ) is equivalent to ( x > y ) !( x >= y ) is equivalent to ( x < y )
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 COMP 1600, ▪ Then I throw a kegger to celebrate Otherwise, ▪ I punch Dr. Wittman in the face
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
if( condition ) { statements1; } else { statements2; } Two different outcomes
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 $" + balance); }
You can have one or many statements inside the braces of an if or an else However, you can optionally leave off the braces if there's only a single statement It's probably a good idea to use the braces until you really know what you're doing Some programmers always use them if( x == 4 ) { System.out.println("I hate 4"); } if( x == 4 ) System.out.println("I hate 4"); // braces not needed
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
if( condition1 ){ statement1; if( condition2 ) { if( condition3 ) statement2; … } }
For the next example, recall the 4 quadrants of the Cartesian coordinate system y 2 (0,0) 1 -x x 3 4 -y
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"); }
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");
A block of code is treated just like one statement A whole if-else is treated the same if( … ){ if( … ) statement1; statement1; } else if( … ) else { = statement2; if( … ) else statement2; statement3; else statement3; }
Examples Pitfalls with if statements switch statements
Keep reading Chapter 4 of the textbook Keep working on Project 1 (due tonight! )
Recommend
More recommend