Review Session Ryan Ly (slides by Jai Madhok) Email: rly1@jhu.edu Key Concepts Identifiers- What are they? Rules to determine invalid vs. valid identifiers Cannot be a reserved word No spaces in between No symbols other than the ‘$’ and ‘_’ Cannot begin with a digit Data Types 3 kinds of primitive data types Type conversion between data types Implicit vs. explicit type conversion The ‘Cast’ operator: Syntax: (dataType) expression What happens when an operator has mixed operands? Strings A String is an ‘Object’ In Java, they are enclosed in double quotes What is a null string? Empty string? How does indexing work? Predefined methods: substring(startIndex, stopIndex) charAt(index) indexOf(ch) length() replace() toLowerCase(), toUpperCase() Named Constants Use the keyword final Identifier should be in all Capital Letters Memory location whose content is not allowed to change during program execution Ex: final int CENTS_PER_DOLLAR= 100; Several advantages: Prevent typos ▪ If you mistype the name of the constant, the compiler will warn you as compared to typing in a wrong value which the compiler will blindly accept Easy to modify the program in the future Good programming practice Input Statements To put data into variables from an input device, we first create an input stream object and associate it with a standard input device Scanner scan= new Scanner(System.in); More about Scanner: next() nextInt() nextDouble() nextLine() Know how to use these! How do we read in a single character using a Scanner object? Tokenizing & Parsing Sometimes we read in input in the form of a string and then want to extract numeric data from it How do we do this? Tokenize and Parse Syntax: StringTokenizer t= new StringTokenizer(str, delim) Say we want an integer: int a= Integer.parseInt(t.nextToken()) Other method: Double.parseDouble() Note: Parsing and type casting are different things File Handling A file is defined as an area in secondary storage used to hold information Scanner scan= new Scanner(new FileReader(filename1)); PrintWriter oFile= new PrintWriter(filename2); Warning: Closing the file you are writing to is more important than you think it is Use same methods for reading and writing/formatting files as you have been for user input/output Formatting Output With printf Syntax: System.out.printf(formatString, argumentList) formatString: string specifying the format argumentList: list of arguments containing constant values, variables, or expressions, separated by comma Example: System.out.printf(“There are %.2f inches in %d centimeters \n”, cm/2.54, cm) Where cm is a variable of the type int. Note: You can also use the DecimalFormat class to format your decimal output. Take your pick! More Fun With Strings compareTo() Compare Strings character by character until a mismatch is found What does this method return? What is the basis for deciding what a mismatch is and what it isn’t? equals() Case sensitive method How to solve the case sensitivity issue? What does the method return? Operators- Order of Precedence () . [] Unary Operators: negation, casting, not (!), ++, -Arithmetic Operators I: * / % Arithmetic Operators II: + Comparison Operators: < <= > >= Equivalence Operators: == != Logical AND: && Logical OR: || Ternary Operator: ?: Assignment Operators: = += -= *= /= %= Control Structures Provide alternatives to sequential program execution and are used to alter flow of execution Alternatives are: Selection – if, if/else, switch/case Repetition – for, while, do-while While Loops Using loop control variables Counter controlled while loops Sentinel controlled while loops Flag controlled while loops EOF controlled while loops Do-while loops are different from a generic while Run body then check condition to decide whether to loop T F for (initial statement; loop condition; update statement) Initial Statement Loop Condition T Statements F KNOW THIS LOOP COLD! Update Statement Exit early from a loop Skip the remaining cases in a switch case construct Don’t try and use them at random places to make your code work, most of the time it won’t. java.util – Scanner, StringTokenizer java.io – BufferedReader, FileReader, PrintWriter java.text – DecimalFormat java.lang – String, Math Don’t need to import Reading flow in java: a = a + 2; ‘A’ in ASCII is 65 ASCII is a subset of Unicode Escape sequences Compound operators Increment/Decrement operators, pre/post Documentation Reading Read up some common methods of the following classes for use in the assignments and exams: String Scanner Math StringTokenizer Character True/False Multiple Choice Code Tracing Code Completion Finding Errors Other random kinds of questions like matching exercises are a possibility Exam Tips Read through all questions carefully Write answers legibly Show all work for partial credit Do not spend too much time on any one problem if it is causing trouble, come back to it later on Read through the chapter summaries in the text book and all of Dr. S’s class notes Good Luck! char let=‘A’; for (int i=1; i<=3; i++) { for(int j=i; j<5; j++) System.out.print(let); System.out.println(); let+=1; } Predict the output [6 points] Difficulty: Medium int n1=6, n2=10; if(n1 >= n2/2) { if(true && false) System.out.print(“one”); } else System.out.print(“two”); System.out.print(“three”); Predict the output [3 points] Difficulty: Easy int num=6; while(num<16) { switch(num%4) { case 1: System.out.println(“one”); break; case 2: System.out.println(“two”); case 3: System.out.println(“three”); break; case 0: System.out.println(“multiple”); } num+=3; } Predict the output [4-6 points] Difficulty: Medium boolean a=true, b=false; if (a && (true|| !b) ) if( b || (!a && false) ) System.out.println(“happy”); else System.out.println(“ halloween”); System.out.println(“goblins”); Predict the output [6 points] Difficulty: Medium Sample Code Tracing #5 double a = 1.6; int b = 13; double c = (int) a * 2 + 1; for (; b > 0; b-=3){ b /= c; // legal b/c equivalent to b = (int) (b/c); System.out.println(b); System.out.println(++b * 0.5 + b--); } Predict the output [9 points] Difficulty: Hard Sample Error Finding #1 String s = “hello world”; String space = s.indexOf(“ “); String pt2 = s.substring(space,s.length); System.out.println(pt2); Find the error [3 points] Difficulty: Easy Sample Error Finding #2 int a, b=10; do { if (b = 10) a = 1.5; b = 10; else if ((b-1)%2>5)) a = 3; System.println(“a is ” + a “ and b is ” + b); } while (a != 5) Find the 8 errors [16 points] Difficulty: 5 Medium, 3 Hard