COMP 110: Spring Announcements Lab 1 was due at noon Lab 2 on Friday (Bring Laptops) Assignment 1 is online TA Office hours online 30-min quiz at end of class select all that apply multiple choice
COMP 110: Spring Questions? Last time we covered Typecasting Strings Binary/Unary operators I/O Style
COMP 110: Spring Today in COMP 110 Branching if – else control structure booleans relational operators
COMP 110: Spring Branching Sometimes, it is necessary to make decisions in programs Example The remainder operator can be used to determine if a number n is even or odd If n%2 equals 0, n is even If n%2 equals 1, n is odd
COMP 110: Spring Branching We know how to calculate n % 2 int result = n % 2; But what next to do next?
COMP 110: Spring Branching int result = n % 2; Evaluate result is 0? Execute Print “n is even” Execute Print “n is odd” true false
COMP 110: Spring If-Else Statement An if-else statement allows us to make decisions in a program int result = n % 2; if(result == 0) System.out.println(“That number is even!”); else System.out.println(“That number is odd!”);
COMP 110: Spring If-Else Example int n = 2 int result = n % 2; if(result == 0) System.out.println(“That number is even!”); else System.out.println(“That number is odd!”); System.out.println(“Finished!”); result = 0
COMP 110: Spring If-Else Example int n = 3 int result = n % 2; if(result == 0) System.out.println(“That number is even!”); else System.out.println(“That number is odd!”); System.out.println(“Finished!”); result = 1
COMP 110: Spring Boolean Expressions (result == 0) is a boolean expression Boolean expressions evaluate to either true or false Examples 10 > 5, (true) 4 > 6, (false) Integers are whole numbers, (true)
COMP 110: Spring Java Comparison Operators ==Equal to !=Not equal to >Greater than >=Greater than or equal to <Less than <=Less than or equal to
COMP 110: Spring If-Else Statement Syntax Syntax if(Boolean_Expression) Statement_1 else Statement_2 If Boolean_Expression is true, Statement_1 is executed; otherwise Statement_2 is executed
COMP 110: Spring Compound Statements Multiple statements can be included in each branch Called a compound statement Enclose between {…} if(Boolean_Expression) { Statements_1 } else { Statements_2 }
COMP 110: Spring If without Else Syntax if(Boolean_Expression) Statement_1 Example if(accntBalance-withdrawal < 0) //overdraft fee accntBalance = accntBalance – FEE;
COMP 110: Spring Common Comparison Mistakes Don’t confuse the assignment operator (=) with the comparison operator (==)! if(x == y) //valid if(x = y) //syntax error
COMP 110: Spring Common Comparison Mistakes Don’t use == to compare Strings Use string.equals(A_String) or string.equalsIgnoreCase(A_String) Example String s1 = keyboard.next(); //read in a string if(s1.equals(“Hello”)) System.out.println(“The String is Hello.”); else System.out.println(“The String is not Hello.”);
COMP 110: Spring The && Operator (AND) We can check for multiple conditions using the && (AND) operator Meaning is similar to that of English “and” if ((temperature > 50) && (temperature < 75)) { // walk to school if 50 < temperature < 75 } else { //otherwise drive to school }
COMP 110: Spring The || Operator (OR) We can also join boolean expression with || (OR) Meaning is similar to that of English “or” if (raining || runningLate) { //drive to school }
COMP 110: Spring The ! Operator (NOT) Boolean negation !false is True !true is false Example if (!cloudy) { // walk to school if it’s not cloudy }
COMP 110: Spring Effect of Boolean Operators ABA && BA || B!A true false truefalse truefalse truefalsetrue false true
COMP 110: Spring Boolean Expression Examples Using x = 5, y = 10, z = 15 (x x) (false && true) -> false (x x) (true || true) -> true (x > 3 || z != 15) (true || false) -> true (!(x > 3) && x + y == z) (false && true) -> false
COMP 110: Spring Avoiding the Negation Op !(A !(A > B) --> !(A >= B) --> !(A == B) --> !(A != B) --> (A >= B) (A > B) (A <= B) (A < B) (A != B) (A == B) It’s best to avoid use of the negation operator (!) when possible
COMP 110: Spring Nested If-Statements It’s possible to have if statements inside other if statements Example We want to perform some checks on the user’s account balance If the balance is >= 0, we’ll add interest if the interest rate is >= 0, and print an error message if interest rate is < 0. If the balance is < 0, we’ll subtract a fee.
COMP 110: Spring Nested If Statements Evaluate balance >= 0 Evaluate INTEREST_RATE >= 0 Execute balance -= FEE truefalse Execute balance = balance + balance*INTEREST_RATE Execute Print Error Message a truefalse
COMP 110: Spring Nested If Statements if(balance >= 0) { if(INTEREST_RATE >= 0) balance = balance + INTEREST_RATE*balance; else System.out.println(“Negative Interest!”); } else balance = balance – FEE;
COMP 110: Spring Nested If Statements What if we didn’t need to print the error message? if(balance >= 0 && INTEREST_RATE >= 0) balance = balance + INTEREST_RATE*balance; else balance = balance – FEE; //whats wrong here?
COMP 110: Spring Multi-Branch If Statements What if we need to decide between many possibilities? Example Given a numeric score (0..100) determine whether the grade is an A,B,C,D,or F
COMP 110: Spring Multi-Branch If Statements A if: score >= 90 B if: 90 > score >= 80 C if: 80 > score >= 70 D if: 70 > score >= 60 F in all other cases
COMP 110: Spring Multi-Branch If Statements We could write this as follows if(score >=90) grade = ‘A’; else if(score >=80) grade = ‘B’; else if(score >=70) grade = ‘C’; else if(score >=60) grade = ‘D’; else grade = ‘F’;
COMP 110: Spring Multi-Branch If Statements The preferred way to write this is if(score >=90) grade = ‘A’; else if(score >=80) grade = ‘B’; else if(score >=70) grade = ‘C’; else if(score >=60) grade = ‘D’; else grade = ‘F’;
COMP 110: Spring Multi-Branch If Statement Syntax if(Boolean_Expression_1) Action_1 else if(Boolean_Expression_2) Action_2 … else if(Boolean_Expression_n) Action_n else Default_Action
COMP 110: Spring Programming Demo Write a program to read in three distinct nonnegative integers from the keyboard and display them in increasing order
COMP 110: Spring Programming Demo Designing the algorithm Determine which of a,b,c is the smallest If it’s not a, is it b? If it’s not a or b, must be c Determine which of the two remaining integers is smaller than the other
COMP 110: Spring Programming Demo Evaluate a is smallest? true false a < b < ca < c < b Evaluate b < c true false b < a < cb < c < a Evaluate a < c true false c < a < bc < b < a Evaluate a < b true false Evaluate b is smallest? truefalse
COMP 110: Spring Programming Demo Pseudocode Ask user for three integers, a,b,c Determine which of a,b,c is the smallest Determine which of the remaining two is smaller Print a,b,c in ascending order
COMP 110: Spring Friday Recitation Bring Laptop (fully charged) Any questions about Program 1