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