Presentation is loading. Please wait.

Presentation is loading. Please wait.

Week 4 - Monday.  What did we talk about last time?  Wrapper classes  if statements.

Similar presentations


Presentation on theme: "Week 4 - Monday.  What did we talk about last time?  Wrapper classes  if statements."— Presentation transcript:

1 Week 4 - Monday

2  What did we talk about last time?  Wrapper classes  if statements

3

4

5

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;

9

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 )

17

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);

22

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; } =

31

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!");

37

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?

39

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


Download ppt "Week 4 - Monday.  What did we talk about last time?  Wrapper classes  if statements."

Similar presentations


Ads by Google