420 likes | 506 Views
Chapter 3. Ch 1 – Introduction to Computers and Java. Flow of Control Branching. Chapter 3. 3.1 The if-else Statement 3.2 The Type boolean 3.3 The switch Statement 3.4 Graphics Supplement. 3.1 The if-else Statement. Flow Chart Deconstructed. Start.
E N D
Chapter 3 Ch 1 – Introduction toComputers and Java Flow of ControlBranching
Chapter 3 3.1 The if-else Statement 3.2 The Type boolean 3.3 The switch Statement 3.4 Graphics Supplement
Flow Chart Deconstructed Start Terminator: Show start/stop points Decision:Make a choice booleanexpression T F truestatements falsestatement Process: Statements to execute Stop Connector:Connect lines
Flow Chart Deconstructed<Taxes owed> Start income <= NO_TAX_AMOUNT T F taxesOwed = 0.0 taxesOwed = income * TAX_RATE Stop
If else Deconstructed<Taxes owed> boolean expression ... if (income <= NO_TAX_AMOUNT) { taxesOwed = 0.0; } else { taxesOwed = income * TAX_RATE; } //end if ... true statements false statements
Application Deconstructed<TaxesOwed.java> package taxesowed; import java.util.Scanner; public class TaxesOwed { public static final double NO_TAX_AMOUNT = 10000.0; public static final double TAX_RATE = 0.03; public static void main(String[] args) { double income; double taxesOwed; Scanner keyboard = new Scanner(System.in); System.out.print("Enter your income amount: $"); income = keyboard.nextDouble();
Application Deconstructed<TaxesOwed.java> if (income <= NO_TAX_AMOUNT) { taxesOwed = 0.0; } else { taxesOwed = income * TAX_RATE; }// end else System.out.println("You owe $" + taxesOwed + " on an income of $" + income); }// end main() }// end TaxesOwed
Boolean expressions may usethe following relational operators
Application Deconstructed<StringEquality.java> package stringequality; import java.util.Scanner; public class StringEquality { public static void main(String[] args) { String str1; String str2; Scanner keyboard = new Scanner(System.in); System.out.print("Enter some text: "); str1 = keyboard.nextLine(); System.out.print("Enter more text: "); str2 = keyboard.nextLine();
Application Deconstructed<StringEquality.java> System.out.println(); System.out.println("str1 = \"" + str1 + "\" : str2 = \"" + str2 + "\""); System.out.println(); System.out.println("str1 == str2 ? " + (str1 == str2)); System.out.println("str1.equals(str2) ? " + str1.equals(str2)); System.out.println("str2.equals(str1) ? " + str2.equals(str1)); == asks: are they the same object? The others compare the text.
Application Deconstructed<StringEquality.java> str2 = "apples are red"; System.out.println(); System.out.println("str1 = \"" + str1 + "\" : str2 = \"" + str2 + "\""); System.out.println(); System.out.println("str1.equals(str2) ? " + str1.equals(str2)); System.out.println("str1.equalsIgnoreCase(str2) ? " + str1.equalsIgnoreCase(str2)); }// end main() }// end StringEquality
Application Deconstructed<MultiBranchIf.java> package multibranchif; import java.util.Scanner; public class MultiBranchIf { public static final int SUN = 1; public static final int MON = 2; public static final int TUE = 3; public static final int WED = 4; public static final int THU = 5; public static final int FRI = 6; public static final int SAT = 7; public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); int weekDayNumber; String weekDayName = ""; constants for the days of the week
Application Deconstructed<MultiBranchIf.java> System.out.print("Enter the day of the week [1-Sunday...7-Saturday]: "); weekDayNumber = keyboard.nextInt(); if (weekDayNumber == SUN) { weekDayName = "Sunday"; }else if (weekDayNumber == MON) { weekDayName = "Monday"; }else if (weekDayNumber == TUE) { weekDayName = "Tuesday"; }else if (weekDayNumber == WED) { weekDayName = "Wednesday"; }else if (weekDayNumber == THU) { weekDayName = "Thursday"; }else if (weekDayNumber == FRI) { weekDayName = "Friday"; }else if (weekDayNumber == SAT) { weekDayName = "Saturday"; }// end if This is just an if else, where each else contains an if else.
Application Deconstructed<MultiBranchIf.java> System.out.println("I see you chose " + weekDayName + "."); }// end main() }// end MultiBranchIf
The conditional operator isvery handy // The following if-else: if (minute == 60) { minute = 0; } else { minute += 1; } // can be written with a conditional operator as: minute = (minute == 60)? 0 : minute + 1;
Recap • Use flowcharts to express algorithms. • Use the if for decisions. • Use .equals or .equalsIgnoreCase with strings
3.2The Type boolean True or False?
Boolean expressions evaluateto true or false • number > 0 • True if number > 0, false otherwise • 3 > 4 • False • 3 • True, since not 0
Boolean variables simplify // Testing for leap year. if ( (year % 100 != 0) && (year % 4 == 0) || (year % 400 == 0) ) { // leap year } The && has higher priority than || // Testing for leap year. boolean isLeap = (year % 100 != 0) && (year % 4 == 0) || (year % 400 == 0); if (isLeap) { // leap year }
Be mindful of the order of evaluation • Parentheses go first, then • Arithmetic, then • Relational, and then • Logical
Brainteaser time! int x = 3 * 5 + (4 – 5) / 2 + 6 % 4; bool goAhead = 5 > 3 || 3 + 5 < 3 * 2; bool isRaining = true; bool haveUmbrella = false; bool gotWet = isRaining && !haveUmbrella;
Booleans use true or false boolean isOld = true; System.out.println("isOld = " + isOld); // displays isOld = true System.out.print("Answer true or false. This is fun: "; boolean isOfAge = keyboard.nextBoolean(); // IO Answer true of false. This is fun: true
Recap • Booleans hold either true or false. • (), arithmetic, relational, logical, in that order. • Boolean variables simplify code.
3.3The switchstatement case 1 True statements False case n True statements False default
Switch Deconstructed switch (expression) { case label1: statements; [break]; case label2: statements; [break]; ... default: statements; [break]; } break is optional sdk 7: label canbe a string default is optional
Switch Deconstructed<DayOfTheWeek> // ... code omitted switch (dayOfTheWeek) { case MON: case TUE: case WED: case THU: case FRI: System.out.println("Bah, still a work day!"); break; case SAT: case SUN: System.out.println("Woo hoo, weekend!); break; default: System.out.println("No comprendo!"); break; }
Brainteaser time! Draw the flow chart for the DayOfTheWeek switch
Application Deconstructed<DayOfTheWeek.java> package dayoftheweek; import java.util.Scanner; public class DayOfTheWeek { public static final int SUN = 1; public static final int MON = 2; public static final int TUE = 3; public static final int WED = 4; public static final int THU = 5; public static final int FRI = 6; public static final int SAT = 7; public static void main(String[] args) { int dayOfTheWeek; Scanner keyboard = new Scanner(System.in);
Application Deconstructed<DayOfTheWeek.java> System.out.print("Enter the day of the week [Sun = 1...Sat = 7]: "); dayOfTheWeek = keyboard.nextInt(); switch (dayOfTheWeek) { case MON: case TUE: case WED: case THU: case FRI: System.out.println("Bah, still a work day!"); break; case SAT: case SUN: System.out.println("Woo hoo, weekend!"); break; default: System.out.println("No comprendo!"); break; }// end switch }// end main() }// end DayOfTheWeek
Applet Deconstructed< YellowSmileyFace.java > package yellowsmileyface; import javax.swing.JApplet; import java.awt.Color; import java.awt.Graphics; public class YellowSmileyFace extends JApplet { public static final int FACE_DIAMETER = 200; public static final int X_FACE = 100; public static final int Y_FACE = 50; public static final int EYE_WIDTH = 10; public static final int EYE_HEIGHT = 20; public static final int X_RIGHT_EYE = 155; public static final int X_LEFT_EYE = 230; public static final int Y_RIGHT_EYE = 100; public static final int Y_LEFT_EYE = Y_RIGHT_EYE; public static final int NOSE_DIAMETER = 10; public static final int X_NOSE = 195; public static final int Y_NOSE = 135;
Applet Deconstructed< YellowSmileyFace.java > public static final int MOUTH_WIDTH = 100; public static final int MOUTH_HEIGHT = 50; public static final int X_MOUTH = 150; public static final int Y_MOUTH = 160; public static final int MOUTH_START_ANGLE = 180; public static final int MOUTH_EXTENT_ANGLE = 180; @Override public void paint(Graphics canvas) { canvas.setColor(Color.YELLOW); canvas.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER); canvas.setColor(Color.BLACK); canvas.drawOval(X_FACE, Y_FACE, FACE_DIAMETER, FACE_DIAMETER);
Applet Deconstructed< YellowSmileyFace.java > canvas.setColor(Color.BLUE); canvas.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE, EYE_WIDTH, EYE_HEIGHT); canvas.fillOval(X_LEFT_EYE, Y_LEFT_EYE, EYE_WIDTH, EYE_HEIGHT); canvas.setColor(Color.BLACK); canvas.fillOval(X_NOSE, Y_NOSE, NOSE_DIAMETER, NOSE_DIAMETER); canvas.setColor(Color.RED); canvas.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT, MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE); }// end paint() }// end HappyFaceAppletConstants
Application Deconstructed< NameThatCountry.java > package namethatcountry; import javax.swing.JFrame; import java.awt.Color; import java.awt.Graphics; import javax.swing.JOptionPane; public class NameThatCountry extends JFrame { public static final int FRAME_WIDTH = 600; public static final int FRAME_HEIGHT = 400; public static final int BAND_WIDTH = 120; public static final int BAND_HEIGHT = 250; public static final int X_FLAG = (FRAME_WIDTH - 3 * BAND_WIDTH) / 2; public static final int Y_FLAG = (FRAME_HEIGHT - BAND_HEIGHT) / 2; public static final int X_GREEN = X_FLAG; public static final int Y_GREEN = Y_FLAG;
Application Deconstructed< NameThatCountry.java > public static final int X_WHITE = X_GREEN + BAND_WIDTH + 1; public static final int Y_WHITE = Y_FLAG; public static final int X_ORANGE = X_WHITE + BAND_WIDTH + 1; public static final int Y_ORANGE = Y_FLAG; public static void main(String[] args) { NameThatCountry flagWindow = new NameThatCountry(); flagWindow.setVisible(true); String countryName = JOptionPane.showInputDialog("Can you name this country?"); if ( countryName.equalsIgnoreCase("Ireland") ) { JOptionPane.showMessageDialog(null, "Nice Job."); } else { JOptionPane.showMessageDialog(null, "Sorry, its Ireland"); }// end else System.exit(0); }// end main()
Application Deconstructed< NameThatCountry.java > public NameThatCountry() { setSize(FRAME_WIDTH, FRAME_HEIGHT); setTitle("Name that country"); }// end NameThatCountry() @Override public void paint(Graphics canvas) { canvas.setColor(Color.GREEN); canvas.fillRect(X_GREEN, Y_GREEN, BAND_WIDTH, BAND_HEIGHT); canvas.setColor(Color.WHITE); canvas.fillRect(X_WHITE, Y_WHITE, BAND_WIDTH, BAND_HEIGHT); canvas.setColor(Color.ORANGE); canvas.fillRect(X_ORANGE, Y_ORANGE, BAND_WIDTH, BAND_HEIGHT); } }// end NameThatCountry