CS 200 Branches Jim Williams, PhD
This Week Team Lab: Using Objects, take paper Thursday: P3 due Pre-Exam 1: bring WISC ID, #2 Pencils 6 questions, 15 minutes Consulting hours: Request Help Queue Lecture: Branches
Best statement? x = rand.nextInt(10)-2; What is the best statement to get a value between 2 and 10, inclusive of both 2 and 10? Assume: Random rand = new Random(); int x; //x = ??? x = rand.nextInt(10)-2; x = rand.nextInt(9)+1; x = rand.nextInt(8)+2; x = rand.nextInt(9)+2; Other try it.
What are values of variables? String note = " C S\n2 \n33\n end\n"; Scanner input = new Scanner( note); String str1 = input.nextLine(); int num1 = input.nextInt(); String str2 = input.next(); String str3 = input.nextLine(); num1: 2 str2: "33" str3: "" str2: " \n33" str3: "\n end" str3: " end"
Eclipse IDE Opening project, copying in files Style and Commenting Guides Strings I/O Calling methods Compiler & Runtime Errors Scanner reading a number
Relational and Equality Operators < <= > >= == != int n = 6; boolean result = n != 5; result: true result: false
Logical Operators && (AND) both sides true to be true, else false || (OR) either side true then true, else false ! (NOT) if true then false, and vice-versa !(a && b) == !a || !b //is this true or false?
What is result? boolean result = flag = false || flag; Truth Table: try it.
Does !(a && b) == !a || !b Truth Table: a b a && b !(a && b) !a !b
Are these equivalent? boolean tired = true; boolean tired = true; Same result in all cases Different result sometimes Error boolean tired = true; if ( tired) { //take break tired = false; } if ( !tired) { //keep working boolean tired = true; if ( tired) { //take break tired = false; } else { //keep working }
Floating Down a River http://www.thehiltonorlando.com/discover/pools-and-lazy-river/
Side Trip, maybe multiple side trips boolean tired = true; if ( tired) { System.out.println(“take break”); }
One side of the Island or the other boolean sunny = false; if ( sunny) { System.out.print(“sunny”); } else { System.out.print(“not sunny”); } System.out.println( “ and back together”);
Today pre-midterm 1 Lecture: continue with Branches 6 questions, 15 minutes Lecture: continue with Branches
Equivalent? Yes No char chr = //any valid char out = 'W'; if ( chr == 'A') { out = 'X'; } else if ( chr == 'B') { out = 'Y'; } else { out = 'Z'; } char chr = //any valid char out = 'W'; if ( chr == 'A') { out = 'X'; } if ( chr == 'B') { out = 'Y'; } if ( chr != 'A' || chr != 'B') { out = 'Z'; } Yes No
Switch: What is printed out? char choice = 'a'; switch (choice) { case 'a': System.out.print("a"); case 'b': System.out.print("b"); break; default: System.out.print("other"); } a b ab other
What is the value of msg? boolean flag = true; String msg = "before if"; if ( flag) { msg = "" + flag; } before if true false
Comparing: == vs equals() Primitive data types use == for comparing primitive values No equals() method for primitive data types (but there is equals() method in wrapper classes) Reference data types use == for comparing references use equals() for comparing instance/object contents The meaning of equals() depends on the class it is defined in.
What is printed out? true *compiler error false int i = 6; int j = 6; System.out.println( i == j); System.out.println( i.equals( j)); Integer k = new Integer( 7); Integer m = new Integer( 7); System.out.println( k == m); System.out.println( k.equals( m)); true *compiler error false
Values of a1 and a2? char ch1 = 'H'; String str = "Hello"; a1: true a2: true a1: false a2: false char ch1 = 'H'; String str = "Hello"; char ch2 = str.charAt(0); boolean a1 = ch1 == ch2; boolean a2 = ch1.equals(ch2);
String: == vs equals() String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = "hello"; System.out.println( str1 == "hello" ); System.out.println( str1 == str2); System.out.println( str1.equals("hello")); System.out.println( str3 == str1); System.out.println( str3.equals( str2));
Scanner Scanner input = new Scanner("1 \ntwo \n 2\n\n"); int a = input.nextInt(); if ( input.hasNextInt()) { int b = input.nextInt(); } else { input.nextLine(); } String line = input.nextLine(); System.out.println("#" + line + "#");
Scanner num: 0 str4: 3 str4: line note. num: 3 str4: String note = "Hmm\na \na\n3\n\nline note."; Scanner input = new Scanner( note); int num = 0; String str1 = input.nextLine(); String str2 = input.next(); if ( input.hasNextInt()) { num = input.nextInt(); } String str4 = input.nextLine();
Debugging with Print statements See what is going on. Divide and conquer.