If you want to relive taking the midterm, here it is in PostScript or PDF.
Problem 1. (6 points) Java bugs.
public class Quantity {
public String thing; // The thing being measured.
public double amount; // Its numerical quantity.
// Constructor.
public Quantity(String thingString, double amount) {
thing = thingString;
this.amount = amount;
}
// Constructor for thing with quantity 100. Calls the other constructor.
public Quantity(String thingString) {
this(thingString, 100.0);
}
public static void main(String[] args) {
Quantity q = new Quantity("I love Java this much: ");
System.out.println(q.thing + q.amount);
}
}
Problem 2. (7 points) Inheritance.
a. Meow
b.
What up fool? Meeeeow!c. Compile-time error. (Tomcat t = c; needs a cast.)
d. Meeeeow!
e. Compile-time error. (The Cat class does not have a method with the signature greet(Cat).)
f. Run-time error. (Attempt to cast a Siamese object to a Tomcat.)
g. Compile-time error. (Cannot create an instance of the abstract class Cat.)
Problem 3. (7 points) The heap and the stack.
Problem 4. (5 points) Creating a Doubly-Linked List.
This sample solution builds the list backward, from tail to head. That way, no special cases are needed to handle a zero-length array or an array whose ints are all zero.
public static DListNode makeList(int[] counts) {
DListNode l = null;
for (int i = counts.length - 1; i >= 0; i--) {
for (int j = 0; j < counts[i]; j++) {
l = new DListNode(counts[i], null, l);
if (l.next != null) {
l.next.prev = l;
}
}
}
return l;
}