Key to CSE143X Midterm, Fall 2016
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 - 2168"
        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.
        picnic and lemonade like ants
        ants and ants like y
        lemonadey and antspicnic like antsy
        lemonade and sunny like today
3.      Method Call             Output Produced
        ---------------------------------------
        ifElseMystery(5, 20);     7 5
        ifElseMystery(42, 42);    43 41
        ifElseMystery(6, 1);      9 7
        ifElseMystery(2, 0);      3 -1
        ifElseMystery(7, 10);     9 7
        ifElseMystery(4, 4);      5 3
4.      Method Call             Output Produced
        ---------------------------------------
        mystery(8);                   1 8
        mystery(32);                  2 5
        mystery(184);                 3 13
        mystery(8239);                4 22
5.                  y == 0               y % 2 == 0             z == 0
            +---------------------+---------------------+---------------------+
    Point A | never               | always              | always              |
            +---------------------+---------------------+---------------------+
    Point B | never               | always              | sometimes           |
            +---------------------+---------------------+---------------------+
    Point C | sometimes           | always              | never               |
            +---------------------+---------------------+---------------------+
    Point D | never               | never               | sometimes           |
            +---------------------+---------------------+---------------------+
    Point E | always              | always              | sometimes           |
            +---------------------+---------------------+---------------------+
6. One possible solution appears below.
        public static int printSequenceTo(double value) {
            double sum = 0.5;
            System.out.print("1/2");
            int n = 1;
            while (sum < value) {
                n++;
                System.out.print(" + " + n + "/" + (n + 1));
                sum = sum + (double) n / (n + 1);
            }
            System.out.println(" = " + sum);
            return n;
        }
7. One possible solution appears below.
        public static void switchData(Scanner input) {
            while (input.hasNextLine()) {
                String line = input.nextLine();
                Scanner tokens = new Scanner(line);
                String label = tokens.next();
                System.out.print(label);
                while (tokens.hasNextInt()) {
                    int n1 = tokens.nextInt();
                    if (tokens.hasNextInt()) {
                        int n2 = tokens.nextInt();
                        System.out.print(" " + n2);
                    }
                    System.out.print(" " + n1);
                }
                System.out.println();
            }
        }
8. Arrays.  One possible solution appears below.
        public static void minToFront(int[] list) {
            if (list.length > 0) {
                int min = 0;
                for (int i = 0; i < list.length; i++) {
                    if (list[i] < list[min]) {
                        min = i;
                    }
                }
                int temp = list[0];
                list[0] = list[min];
                list[min] = temp;
            }
        }
9. Programming.  One possible solution appears below.
        public static boolean isMatch(String pattern, String text) {
            int j = 0;
            for (int i = 0; i < pattern.length(); i++) {
                char ch1 = pattern.charAt(i);
                if (ch1 == '*') {
                    int diff = text.length() - pattern.length() + 1;
                    if (diff < 0) {
                        return false;
                    } else {
                        j += diff;
                    }
                } else {
                    if (j >= text.length()) {
                        return false;
                    }
                    char ch2 = text.charAt(j);
                    j++;
                    if (ch1 != '.' && ch1 != ch2) {
                        return false;
                    }
                }
            }
            return j == text.length();
        }
    below is a solution to the 4-point problem:
        public static boolean isMatch(String pattern, String text) {
            if (text.length() != pattern.length()) {
                return false;
            }
            for (int i = 0; i < pattern.length(); i++) {
                char ch1 = pattern.charAt(i);
                char ch2 = text.charAt(i);
                if (ch1 != '.' && ch1 != ch2) {
                    return false;
                }
            }
            return true;
        }