CS 117, Fall 2001, Musicant: Exam #1 (100 points)	Name:_____________________________

1. Short answers.
(a) (4 points) Fill in the blanks.

A Java __________________________ changes Java source code into Java bytecode.

A Java __________________________ runs a program in Java bytecode.

(b) (4 points) Define type casting:

(c) (5 points) What is the difference between a class data value and an instance data value?

(d) (5 points) What is the difference between an instance data value and a local variable?

2. (14 points) Assume that the following declarations and assignments have been made:

int x = 41;
double y = 10;
boolean z = false;
double w = 0;

Every expression in Java, when evaluated, has both a type and a value. For each of the expressions below, indicate the type and value of the answer. (The first one has been filled in for you as an example.)

Expression	Type	Value	
3 – 6	int	-3	
36 / 5			
-39 / 5			
x % 5			
y / 5			
((x > y) && z)			
((x > y) || z)			
(z && w > 0)			

3. (6 points) Consider the following two code fragments (assume in is an instance of an InputBox and out is an instance of an OutputBox):

fragment 1:
int i = in.getInteger();
while (i >= 1)
{
  out.printLine(i);
  i = i - 1;
}

fragment 2:
int i = in.getInteger()
do {
  out.printLine(i);
  i = i - 1;
} while (i >= 1);

For what values of i will the two code fragments produce the same output? Why?

4. (16 points) Consider the following code fragment:

switch(i) {
  case 10:
    d = 2.2;
    break;
  case 15:
  case 25:
    d = 7.7;
    break;
  default:
    d = 1.1;
}

Rewrite this code with if-else instead of switch.

5. (20 points) What is the output for the code fragment below? Show your answer in the box to the right, but also show your work for partial credit.

// Assume out is a properly created OutputBox object
int n = 7;

while (n >= 3)
{
  for (int c = 1; c < n; c++)
  {
    if (n%2 == 0)
      out.print("X");
    else
      out.print("O");
  }
  out.printLine();
  n = n - 1;
}

6. (a) (20 points) Write the code for the instantiable class Bus, which represents a bus that moves passengers around in a simulated city. Bus objects have a ticket price, a maximum capacity of passengers, and a current number of passengers. Implement at least one constructor and three additional methods: one adds passengers without exceeding the capacity, another removes passengers without removing more than are currently riding, and the last method determines the income received for a particular bus based on the number of riders on the bus and the ticket price. No other methods are required. DO NOT USE InputBox or OutputBox objects -- this class is to be considered to be a "helper" class to other classes. If something isn't specified, do something reasonable and comment your assumptions.

6. (b) (6 points) Write a code fragment that creates two buses, one having a maximum capacity of 40 riders and a ticket price of $0.50, and the other having a maximum capacity of 15 and costing $0.75. Attempt to add 11 passengers to one bus and 22 to the other. Print out the income received for both of these buses. You may assume that an OutputBox object named out exists.