Solutions to Quiz #6

1.
What is meant by the *base type* of an array?

Answer:
An array in Java is a list of items, where all the items in the list
are of the same type. That type is called the base type of the array.
For example, the base type of an array of type *int*`[]`
is *int*, and the base type of an array of type *String*`[]`
is *String*.

2.
Explain the meaning of the notation *A*`[`*i*`]` in Java.

Answer:
For this notation to be valid in a program, *A* must be an array.
(That is, *A* must have been declared as a variable of array type, and it must point
to an array object.) Furthermore, *i* has to be an integer variable
(of type *int*, *long*, or some other integer type). In that
case, *A*`[`*i*`]` is simply a name for the
*i*-th element of the array *A*. That is it refers to position
number *i* in the array. *A*`[`*i*`]` is
in effect a variable, and it can be used like any other variable. You can
use it in expressions, pass it as a parameter, and assign values to it.

3.
Suppose that *numList* is an array of type *double*`[]`.
(That is, *numList* is an array of *doubles*.) Write
a code segment that will **compute and print the sum** of all the numbers
in *numList*.

Answer: This is completely standard array processing example:

double sum = 0; for (int i = 0; i < numList.length; i++) { sum += numList[i]; } System.out.println("The sum is " + sum);

4.
Consider the following code segment. Show the
contents of the array *A* after this code segment has
been executed.

int[] A; A = new int[5]; A[0] = 0; for (int i = 1; i < A.length; i++) { A[i] = (2 * A[i-1]) + 1; }

Answer:
The first time that the four loop is executed, *i* is 1 and *i*-1
is 0, so the assignment statement means `A[1] = (2*A[0]) + 1`.
Since A[0] is 0, the value that is assigned to A[1] is 1. The next time through
the for loop, *i* is 2 and *i*-1
is 1, so the assignment statement means `A[2] = (2*A[1]) + 1`.
Since A[1] now has the value 1, the value that is assigned to A[1] is 2*1+1, or 3.
This continues for the remaining elements of the array. The value of each element is
twice the value of the previous element, plus 1. This assigns 2*3+1, or 7, to
A[3] and 2*7+1, or 15, to A[4]. To show the contents of the array as a picture,
we could draw:

+--------+ A: -----> | (5) | (length) +--------+ 0 | 0 | +--------+ 1 | 1 | +--------+ 2 | 3 | +--------+ 3 | 7 | +--------+ 4 | 15 | +--------+