Solution to CSE142 Sample Final handout #31 1. Expression Value --------------------------------------------------- 12/5 + 8/4 4 2.5 * 2 + 17/4 9.0 41 % 15 % 7 + 17 % 3 6 21/2 + "7 % 3" + 17 % 4 "107 % 31" 46/3/2.0/3 * 4/5 2.0 2. Original List Final List -------------------------------------------------------------- () () (7) (0) (3, 2) (0, 2) (5, 4, 3) (0, 4, 6) (2, 4, 6, 8) (0, 4, 12, 24) 3. Polymorphism. The output produced is as follows. b c 1 a 2 b c 1 b 2 c c 1 c 2 b d 1 b 2 4. Token-Based File Processing. One possible solution appears below. public static void printStrings(Scanner input) { while (input.hasNextInt()) { int times = input.nextInt(); String word = input.next(); for (int i = 0; i < times; i++) { System.out.print(word); } System.out.println(); } } 5. Line-Based File Processing. One possible solution appears below. public static void reverseLines(Scanner input) { while (input.hasNextLine()) { String text = input.nextLine(); for (int i = text.length() - 1; i >= 0; i--) { System.out.print(text.charAt(i)); } System.out.println(); } } 6. Arrays. One possible solution appears below. public static boolean isAllEven(int[] list) { for (int i = 0; i < list.length; i++) { if (list[i] % 2 != 0) { return false; } } return true; } 7. ArrayLists. One possible solution appears below. public static void removeShorterStrings(ArrayList<String> list) { for (int i = 0; i < list.size() - 1; i++) { String first = list.get(i); String second = list.get(i + 1); if (first.length() <= second.length()) { list.remove(i); } else { list.remove(i + 1); } } } 8. Critters. One possible solution appears below. public class Pigeon implements Critter { private int count; private int max; public char getChar() { return 'P'; } public int getMove(int x, int y) { if (this.count == 2 * this.max) { this.count = 0; double n = Math.random(); if (n < 0.25) { this.max = 2; } else if (n < 0.5) { this.max = 4; } else if (n < 0.75) { this.max = 6; } else { // n > 0.75 this.max = 8; } } this.count++; if (this.count <= this.max) { return SOUTH; } else { return NORTH; } } } 9. Arrays. One possible solution appears below. public static boolean isUnique(int[] list) { for (int i = 0; i < list.length; i++) { for (int j = i + 1; j < list.length; j++) { if (list[i] == list[j]) { return false; } } } return true; } 10. Programming. One possible solution appears below. public static int[] collapse(int[] list) { int[] result = new int[list.length / 2 + list.length % 2]; for (int i = 0; i < list.length; i++) { result[i / 2] += list[i]; } return result; }
Stuart Reges