Key to CSE142 Midterm, Winter 2010 handout #12 1. Expression Value ----------------------------------------------- 5 * 6 - (4 + 3) * 2 - 2 * 3 10 208 / 20 / 4 + 12 / 10.0 + 0.4 * 2 4.0 8 - 2 + "8 - 2" + (8 - 2) + 8 "68 - 268" 4 * 5 % 6 + 297 % 10 + 4 % 8 13 13 / 2 * 3.0 + 5.5 * 3 / 2 26.25 2. Parameter Mystery. The program produces the following output. he says can we yes Barry says maybe we can we says he we can Sarah says no we can't 3. Method Call Output Produced --------------------------------------- ifElseMystery(1, 8); 3 8 ifElseMystery(3, 5); 5 0 ifElseMystery(4, 5); 5 6 ifElseMystery(8, 6); 8 2 4. Method Call Output Produced --------------------------------------- mystery(0); 1 1 mystery(7); 2 12 mystery(32); 3 123 mystery(256); 4 1234 5. x < y z == 0 z % 2 == 0 +---------------------+---------------------+---------------------+ Point A | sometimes | always | always | +---------------------+---------------------+---------------------+ Point B | always | sometimes | sometimes | +---------------------+---------------------+---------------------+ Point C | sometimes | never | always | +---------------------+---------------------+---------------------+ Point D | sometimes | never | never | +---------------------+---------------------+---------------------+ Point E | never | sometimes | sometimes | +---------------------+---------------------+---------------------+ 6. Two possible solutions appear below. public static boolean hasOddEven(int x, int y, int z) { return x % 2 != y % 2 || y % 2 != z % 2; } public static boolean hasOddEven(int x, int y, int z) { if (x % 2 == 0 && y % 2 == 0 && z % 2 == 0) { return false; } else if (x % 2 == 1 && y % 2 == 1 && z % 2 == 1) { return false; } else { return true; } } 7. One possible solution appears below. public static void findRange(Scanner console) { System.out.print("number (0 to quit)? "); int number = console.nextInt(); int max = number; int min = number; while (number != 0) { if (number > max) { max = number; } else if (number < min) { min = number; } System.out.print("number (0 to quit)? "); number = console.nextInt(); } int range = max - min; System.out.println("range = " + range); } 8. Two possible solutions appear below. public static String undouble(String s) { String result = ""; if (s.length() > 0) { char last = s.charAt(0); result += last; for (int i = 1; i < s.length(); i++) { if (s.charAt(i) != last) { result += s.charAt(i); } last = s.charAt(i); } } return result; } public static String undouble(String s) { String result = ""; if (s.length() > 0) { result = s.substring(0, 1); for (int i = 1; i < s.length(); i++) { if (s.charAt(i) != s.charAt(i - 1)) { result += s.charAt(i); } } } return result; }
Stuart Reges
Last modified: Fri Sep 16 15:54:12 PDT 2011