Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Conditionals (if statement) COMP 102 # T2
© Xiaoying Gao, Peter Andreae COMP :2 Menu If statement (chapter 4, the text book is good) Administrivia: A3 due Wed 11am Assignments are updated Do not copy and paste from model solutions Do not submit your code from last trimester Help desk Tue 4-5, tutorial Friday Small lab Wed 9-10, Thurs 4-5 Online help, forum
© Xiaoying Gao, Peter Andreae COMP :3 Summary: Call a method If the method is in the same class Call from this this.timeMeasure(…) Not in the same class If it is static, call from ClassName UI.askString(…) Not static, call from an object bf1.move(…) To create an object Butterfly bf1 = new Butterfly(200, 100); CartoonFigure jim = new CartoonFigure(“yellow”, 100, 150); What data to use: arguments ObjectName.methodName(arguments)
© Xiaoying Gao, Peter Andreae COMP :4 Making Decisions Examples:
© Xiaoying Gao, Peter Andreae COMP :5 Programs that make decisions Typically, programs perform the instructions sequentially, one step at a time, from top to bottom. Programs that perform the same action every time are boring! You can vary the action in a program! By calling method with different arguments: UI.setColor(col); UI.drawRect(left, top, width, height); By getting input from the user: String action = UI.askString(“What would you like to draw: ”); : UI.drawRect(left, top, width, height); UI.printf(“This is a %s”, action);
© Xiaoying Gao, Peter Andreae COMP :6 Programs that make decisions But this just changes the values, not the action itself. To vary the action inside a method: Need a conditional statement (choice statement) To respond to user's action: If user wants a rectangle, draw a rectangle
© Xiaoying Gao, Peter Andreae COMP :7 Decisions in Java Java has an if statement : Can do an action only in some circumstances: if ( action.equals(“rectangle") ) { UI.drawRect(left, top, width, height); } Java also has an if...else statement: Can choose between different actions: if ( action.equals(“rectangle”)) { UI.drawRect(left, top, width, height); } else { UI.drawOval(left, top, width, height); }
© Xiaoying Gao, Peter Andreae COMP :8 Java: if and if … else LDC 4.2 Forms of the if statement: if ( condition ) { actions to perform if condition is true } ⇒ just skip the actions when the condition is not true ! Forms of the if...else statement: if ( condition ) { actions to perform if condition is true } else { actions to perform if condition is false } Note: the { … } represent a “Block” – a sequence of actions that are wrapped up together into a single statement.
© Xiaoying Gao, Peter Andreae COMP :9 Example: method with conditions /** Ask for amount and currency; note if –ve, print note*/ public void convertMoney( ) { double amt = UI.askDouble(“Enter amount $NZ: ”); if ( amt < 0 ) { UI.println(“Note: you have entered a debt!”); } String cur = UI.askString(“Enter currency (US or Aus): ”); if ( cur.equals(“US”) ) { UI.printf(“$NZ%.2f = $US%.2f\n”, amt, (amt * 0.811)); } else { UI.printf(“$NZ%.2f = $AUS%.2f\n”, amt, (amt * 0.875)); } }
© Xiaoying Gao, Peter Andreae COMP :10 if … vs if … else … if(boolean valued expression{ } else statements ) { }
© Xiaoying Gao, Peter Andreae COMP :11 Multiple choices: if … else if … else if … Can put another if statement in the else part: if ( 〈 condition 1 〉 ) { 〈 actions to perform if condition1 is true 〉 : } else if ( 〈 condition 2 〉 ) { 〈 actions to perform if condition 2 is true (but not condition 1) 〉 : } else if ( 〈 condition 3 〉 ) { 〈 actions to perform if condition 3 is true (but not conditions 1 & 2 〉 : } else { 〈 actions to perform if condition is false 〉 : }
© Xiaoying Gao, Peter Andreae COMP :12 Example: method with multiple choices public void convertMoney( ) { double amt = UI.askDouble(“Enter amount”); if ( amt < 0 ) { UI.println(“Note: you have entered a debt!”); } String cur = UI.askString(“Enter currency (US or Aus)”); if ( cur.equals(“US”) ) { UI.printf(“$NZ%.2f = $US%.2f\n”, amt, amt * 0.811); } else if ( cur.equals(“Aus”) ) { UI.printf(“$NZ%.2f = $AUS%.2f\n”, amt, amt * 0.875); } else { UI.printf(“I cannot convert to %s currency\n”, cur); } Use “.equals” to compare Strings
© Xiaoying Gao, Peter Andreae COMP :13 Example 2: with multiple choices public void printTutorPay( int day, int hours ) { double rate = 22.5; double pay = rate * hours; if ( day > 7 ) { UI.println(“Day must be between 1 and 7”); } else if ( day < 6 ) { UI.printf(“Pay = $ %4.2f \n”, pay); } else if ( day == 6 ) { pay = pay * 1.5; UI.printf(“Pay = $ %4.2f ( time-and-a-half) \n”, pay); } else { pay = pay * 2; UI.printf(“Pay = $ %4.2f ( double-time) \n”, pay); } …. this.printTutorPay(……., …….); Use “==” to compare numbers
© Xiaoying Gao, Peter Andreae COMP :14 Writing Boolean expressions Mostly, boolean expressions are straightforward, There are just a few traps: == is the “equals” operator, = is assignment But only use == for numbers (or characters, or references) age == 15 vs age = 15 ; Use the equals method for Strings, not == (occasionally == will give the right answer by chance!) cur.equals(“US”) vs cur == “US” String equality is case sensitive: “US”.equals(“us”) → false “US”.equalsIgnoreCase(“us”) → true
© Xiaoying Gao, Peter Andreae COMP :15 Writing Boolean expressions When combining with && and ||, which binds tighter ? if ( x > 5 && y <= z || day == 0 ) { …. Use ( and ) whenever you are not sure! if ( ( x > 5 && y <= z ) || day == 0 ) { … if ( x > 5 && ( y <= z || day == 0 ) ) { … The not operator ! goes in front of expressions: if ( !(x > 5 && y <= z) ) { … if ( ! cur.equals(“US”) ) { … if ( ! (count == 0) ) { … OR if ( count != 0 ) { …
© Xiaoying Gao, Peter Andreae COMP :16 Boolean Variables A boolean value is a value! ⇒ it can be stored in a variable. Useful if the program needs to remember some option. Must declare the variable, and assign to it, before using it boolean printSteps = UI.askBoolean(“Print all steps?”); : if ( printSteps ) UI.println(“Processed input”); : if ( printSteps ) UI.println(“Computed Statistics”); :
© Xiaoying Gao, Peter Andreae COMP :17 Boolean expressions LDC 4.1 What can go in the condition of an if statement ? A Boolean value – a value that is either true or false. Boolean expressions: constant values:true, false numeric comparisons: (x > 0) (day <= 7), (x == y), (day != 7) boolean method calls:UI.askBoolean(“End program?”) month.equals(“July”) name.equalsIgnoreCase(“John”) boolean variables: outlineOnly [declared: boolean outlineOnly; ] logical operators:!, &&, || (not, and, or) ( x > 0 && x < 7 && outlineOnly ) ( month.startsWith(“Ju”) || month.equals(“May”) ) ( ! fileModified || ! (cmd.equals(“exit”)) )
© Xiaoying Gao, Peter Andreae COMP :18 Exercise public void testIt(int x){ if ( x = 15 ) { UI.print("A "); } if ( x < 7 && x != 4 ) { UI.print("B "); } if ( ! (x == 4 || x == 10) ) { UI.print("C "); } UI.println(); } this.testIt(4) this.testIt(6) this.testIt(8)
© Xiaoying Gao, Peter Andreae COMP :19 Exercise Marks to grades >=75 A 60~75 B 50~60 C 40~50 D <40 E Write a method Ask the user for a number Print a grade