Agenda Warmup Lesson 1.4 (double precision, String methods, etc) Guided Practice (1.4 Assignments) Closure Activity Students will be able to: Understand what libraries and packages are in Java Import a class from a library/package Solve the double precision problem Use String methods to manipulate Strings See how today's lesson fits into the unit and the course as a whole
socrative.com Room: EASTQUINN 43 / 5 = 1234 % 500 = 3 / 2.0 = (double)11 / 2 = (double)(11 / 2) = if ((8/5 == 1.6) || (4/3 == 1)) // true or false? 7) 9 % 7 * 10 / 4 – 3 % 5 / 2 = 8) If (word = = “bird”); // find 3 errors.
Quiz: FRIDAY
if (score >= 60 && score <=100) { System. out if (score >= 60 && score <=100) { System.out.print(“Pass”); } if (score >= 0) System.out.print(“Fail”);
if (score >= 60 && score <=100) { System. out if (score >= 60 && score <=100) { System.out.print(“Pass”); } if (score >= 0 && score < 60) System.out.print(“Fail”);
if (score >= 60 && score <=100) { System. out if (score >= 60 && score <=100) { System.out.print(“Pass”); } if (score >= 0 && score < 60) System.out.print(“Fail”); else System.out.print(“Invalid Score”);
Constants A constant is a variable whose value is expected to remain the same throughout a program It is considered “good programming style” to use constants for certain variables – for instance: interest rate on a loan, pi, etc Also, constants should be written in uppercase To declare a constant, add the word final: final double PI= 3.1415; final int HOURS_IN_A_DAY= 24; PI = 3.7; // this would cause an error
Class Libraries and Packages A class library is a set of packages, each of which contains classes (files) of code that can be used by programmers You can use this code simply by importing a package into your program, with a single line of code Top line of code: import library.package.class This is why Object-Oriented languages like Java are so popular – you can use code someone else has written, over and over again
Roundoff error In Java, doubles are slightly imprecise. For example: double x = 4.35; int y = (int)(100 * x); In this example, y = 434. This is because computers use binary, and some decimals cannot be exactly represented in binary. So, x actually equals 4.3499999999… 100 * x = 434.999999 Therefore, (int)(100 * x) truncates the .9999999, and the result is y = 434. This is known as roundoff error. It only happens with doubles.
You can use the Math.round( ) method to fix this. Math.round( ) does not truncate the decimal. Instead, it correctly rounds to the nearest whole number: double a = Math.round(7.5); // a = 8.0 double b = Math.round(13.4); // b = 13.0 int c = (int)Math.round(16.8); // c = 17
Now, we can use Math.round( ) to solve the previous problem: double x = 4.35; int y = (int)(Math.round (100 * x) ); Here, 434.9999999 gets correctly rounded to 435. You can also round off to a certain amount of decimal places. To do this, we import and use the DecimalFormat class. Note: the result is a String. Demo: DecimalRound
Algebra Review…
Answer: C
Working with Strings Characters in a String can be identified by their index #. The first character in a String has index # 0. You need to know the following String methods: length( ) returns the number of characters in the String charAt(index) returns the char at the given index indexOf(char) reverse of charAt. returns the first index # of the given char substring(Start, End) returns the chars from index Start to index (End – 1) substring(Start) when only the starting index is given, returns the chars from start to the end of the String toUpperCase, toLowerCase converts the entire String to upper or lowercase
Examples… String coin = “Nickel”; Demo: StringMethods code result coin.length( ) 6 (even though the last letter is at index #5) coin.toUpperCase( ) NICKEL coin.charAt(1) i coin.indexOf(“k”) 3 coin.indexOf(“g”) –1 (since g was not found) coin.substring(1,3) “ic” (notice that letters 1 and 2 are the result, but not 3) coin.substring(2) “ckel” (starts at 2 and goes to the end)
String x = “September”; int y = x. indexOf(‘e’); // y equals 1 String x = “September”; int y = x.indexOf(‘e’); // y equals 1. // indexOf only finds the first occurrence. int z = x.indexOf(“pte”); // z equals 2. // indexOf can be used to find > 1 letter.
Although it is unusual, variables are not necessary when using String methods. For example: System.out.print(“dogs”.charAt(2)); // displays g System.out.print(“cats”.indexOf(‘s’)); // displays 3 int x = “frogs”.length( ); // x now equals 5
Assignments (Strings1) Prompt the user to enter a word. (Assume that it’s at least 3 letters long.) If the word is “apple,” then ask the user to enter a letter. If that letter is a or b, display “banana.” If it’s another letter, display “cantaloupe.” If the word is “kiwi,” then ask the user to enter a number. If the number is odd and divisible by 9, display “orange.” If the number is negative or equals 2112, display “pineapple.” If the word is something other than apple or kiwi, display the 3rd letter of the word. Display how many letters are in the word. Using only one String method, display the 2nd and 3rd letters. Display whether or not “o” is in the word. If it is, display which index it first occurs at. (see next slide)
2. (Middle) Prompt the user to enter their middle name. If the 1st letter is a consonant, display “Consonant,” otherwise, display “Vowel” If there are more than 8 letters in the name, display “long”, if between 5 and 8 (inclusive), display “medium”, otherwise, display “short.” Display whether the # of letters in the name is even or odd. Also, if it’s even, display whether or not it is divisible by 4. If it’s odd, display whether or not it is divisible by 5. If the letter ‘a’ is in the name, display the first index # it was found at (example: “The letter a was first found at index #3”) If it is not found, then say “The letter a was not found.” If the first and last letters in the name are the same, display “same,” otherwise “different” If the 2nd letter and the 2nd-to-last letter are both k, display “YES K” Display the 1st through the 3rd letters. Display all letters from the 2nd to the end of the name.