Java Reference
In-Depth Information
A non-Java notation for subarrays
Throughout this text, we have used the notation h..k to denote the range of
integers h , h+1 , h+2 , …, k . We can use this notation to describe a rectangular
subarray of an array b. Here are some examples:
b[0][h..k] Elements of row 0 with column numbers in h..k
b[0][h..] Elements of row 0 with column numbers at least h
b[i..j][h] Elements of column h with row numbers in i..j
b[i..j][h..k] Elements of rows i..j with column numbers
in h..k
We use this non-Java notation to provide understanding of the function in
Fig. 9.1, which sums the elements of a two-dimensional array. When reading the
outer loop, understand its repetend in terms of the statement-comment:
Add the elements of row r to x
which explains what the repetend does, not how it does it. Then, when reading
the implementation of this statement-comment, put the outer loop out of your
mind. It is possible to write the function without local variable p , using just local
variable x . We introduced p to make the function body easier to understand.
Two-dimensional array initializers
Array initializer {2, 4, 6} can be used in creating a one-dimensional array.
This notation extends to two dimensions. For example, the statement below cre-
ates and stores in c the name of a 4x3 array object —an array object that has 4
rows and 3 columns. the first row contains {2, 4, 6} , the second, {1, 1, 1} , and
so on:
int [][] c= {{2, 4, 6}, {1, 1, 1}, {4, 5, 6}, {0, 0, 1}};
/** = the sum of the elements of array b */
public static int sum( int [][] b) {
int x= 0;
// invariant: x is the sum of rows 0..r-1
for ( int r= 0; r != b.length; r= r + 1) {
// Add the elements of row r to x
int p= 0;
// invariant: p is the sum of elements b[r][0..c-1]
for ( int c= 0; c != b[r].length; c = c+1)
{ p= p + b[r, c]; }
x= x + p;
}
}
Figure 9.1:
A function to sum the elements of a two-dimensional array
Search WWH ::

Custom Search