Java Programming: From Problem
Analysis to Program Design, 3e
Chapter 9
Arrays
Chapter Objectives
• Learn about arrays
• Explore how to declare and manipulate data
into arrays
• Understand the meaning of “array index out
of bounds”
• Become familiar with the restrictions on
array processing
Java Programming: From Problem Analysis to Program Design, 3e 2
Chapter Objectives (continued)
• Discover how to pass an array as a
parameter to a method
• Discover how to manipulate data in a two-
dimensional array
• Learn about multidimensional arrays
Java Programming: From Problem Analysis to Program Design, 3e 3
Array
• Definition: structured data type with a fixed
number of elements
• Elements of an array are also called
components of the array
• Every element is of the same type
• Elements are accessed using their relative
positions in the array
Java Programming: From Problem Analysis to Program Design, 3e 4
One-Dimensional Arrays
Java Programming: From Problem Analysis to Program Design, 3e 5
One-Dimensional Arrays
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 6
One-Dimensional Arrays
(continued)
•intExp = number of components in array >= 0
•0 <= indexExp <= intExp
Java Programming: From Problem Analysis to Program Design, 3e 7
Arrays
• Array num:
int[] num = new int[5];
Java Programming: From Problem Analysis to Program Design, 3e 8
Array List
Java Programming: From Problem Analysis to Program Design, 3e 9
Array List (continued)
Java Programming: From Problem Analysis to Program Design, 3e 10
Array List (continued)
Java Programming: From Problem Analysis to Program Design, 3e 11
Array List (continued)
Java Programming: From Problem Analysis to Program Design, 3e 12
Specifying Array Size During Program Execution
Java Programming: From Problem Analysis to Program Design, 3e 13
Array Initialization During Declaration
• The initializer list contains values, called initial
values, that are placed between braces and
separated by commas
• Here, sales[0]= 12.25, sales[1]=
32.50, sales[2]= 16.90, sales[3]=
23.00, and sales[4]= 45.68
Java Programming: From Problem Analysis to Program Design, 3e 14
Array Initialization During Declaration
(continued)
• When declaring and initializing arrays, the
size of the array is determined by the number
of initial values within the braces
• If an array is declared and initialized
simultaneously, we do not use the operator
new to instantiate the array object
Java Programming: From Problem Analysis to Program Design, 3e 15
Arrays and the Instance Variable
length
• Associated with each array that has been
instantiated, there is a public (final) instance
variable length
• The variable length contains the size of the array
• The variable length can be directly accessed in a
program using the array name and the dot operator
int[] list = {10, 20, 30, 40, 50, 60};
Java Programming: From Problem Analysis to Program Design, 3e 16
Arrays and the Instance Variable
length (continued)
• This statement creates the array list of six
components and initializes the components
using the values given
– Here list.length is 6
int[] numList = new int[10];
• This statement creates the array numList of
10 components and initializes each
component to 0
Java Programming: From Problem Analysis to Program Design, 3e 17
Arrays and the Instance Variable
length (continued)
• The value of numList.length is 10
numList[0] = 5;
numList[1] = 10;
numList[2] = 15;
numList[3] = 20;
• These statements store 5, 10, 15, and 20, respectively, in
the first four components of numList
• You can store the number of filled elements, that is, the
actual number of elements, in the array in a variable, say
numOfElement
• It is a common practice for a program to keep track of the
number of filled elements in an array
Java Programming: From Problem Analysis to Program Design, 3e 18
Processing One-Dimensional
Arrays
• Loops used to step through elements in array
and perform operations
int[] list = new int[100];
int i;
for (i = 0; i < list.length; i++)
//process list[i], the (i + 1)th
//element of list
for (i = 0; i < list.length; i++)
list[i] = console.nextInt();
for (i = 0; i < list.length; i++)
System.out.print(list[i] + " ");
Java Programming: From Problem Analysis to Program Design, 3e 19
Arrays (continued)
• Some operations on arrays:
– Initialize
– Input data
– Output stored data
– Find largest/smallest/sum/average of elements
double[] sales = new double[10];
int index;
double largestSale, sum, average;
Java Programming: From Problem Analysis to Program Design, 3e 20
Code to Initialize Array to
Specific Value (10.00)
for (index = 0; index < sales.length;
index++)
sales[index] = 10.00;
Java Programming: From Problem Analysis to Program Design, 3e 21
Code to Read Data into Array
for (index = 0; index < sales.length;
index++)
sales[index] = console.nextDouble();
Java Programming: From Problem Analysis to Program Design, 3e 22
Code to Print Array
for (index = 0; index < sales.length;
index++)
System.out.print(sales[index] + " ");
Java Programming: From Problem Analysis to Program Design, 3e 23
Code to Find Sum and Average
of Array
sum = 0;
for (index = 0; index < sales.length;
index++)
sum = sum + sales[index];
if (sales.length != 0)
average = sum / sales.length;
else
average = 0.0;
Java Programming: From Problem Analysis to Program Design, 3e 24
Determining Largest Element in
Array
maxIndex = 0;
for (index = 1; index < sales.length;
index++)
if (sales[maxIndex] < sales[index])
maxIndex = index;
largestSale = sales[maxIndex];
Java Programming: From Problem Analysis to Program Design, 3e 25
Determining Largest Element in
Array (continued)
Java Programming: From Problem Analysis to Program Design, 3e 26
Determining Largest Element in
Array (continued)
Java Programming: From Problem Analysis to Program Design, 3e 27
Array Index Out of Bounds
• Array in bounds if:
0 <= index <= arraySize – 1
• If index < 0 or index > arraySize:
ArrayIndexOutOfBoundsException
exception is thrown
• Base address: memory location of first
component in array
Java Programming: From Problem Analysis to Program Design, 3e 28
Declaring Arrays as Formal
Parameters to Methods
• A general syntax to declare an array as a formal
parameter
dataType[] arrayName
public static void arraysAsFormalParameter(int[] listA,
double[] listB, int num)
{
//...
}
int[] intList = new int[10];
double[] doubleNumList = new double[15];
int number;
arraysAsFormalParameter(intList, doubleNumList,
number);
Java Programming: From Problem Analysis to Program Design, 3e 29
The Assignment Operators and
Arrays
Java Programming: From Problem Analysis to Program Design, 3e 30
The Assignment Operators and
Arrays (continued)
Java Programming: From Problem Analysis to Program Design, 3e 31
The Assignment Operators and
Arrays (continued)
Java Programming: From Problem Analysis to Program Design, 3e 32
Relational Operators Arrays
• if (listA == listB)...
- The expression listA == listB determines if
the values of listA and listB are the same and thus
determines whether listA and listB refer to the
same array
- To determine whether listA and listB contain
the same elements, you need to compare them
component by component
- You can write a method that returns true if two
int arrays contain the same elements
Java Programming: From Problem Analysis to Program Design, 3e 33
Relational Operators and Arrays
(continued)
boolean isEqualArrays(int[] firstArray,
int[] secondArray)
{
if (firstArray.length != secondArray.length)
return false;
for (int index = 0; index < firstArray.length;
index++)
if (firstArray[index] != secondArray[index])
return false;
return true;
}
if (isEqualArrays(listA, listB))
...
Java Programming: From Problem Analysis to Program Design, 3e 34
Arrays as Parameter Methods
Java Programming: From Problem Analysis to Program Design, 3e 35
Methods for Array Processing
Java Programming: From Problem Analysis to Program Design, 3e 36
Methods for Array Processing
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 37
Methods for Array Processing
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 38
Methods for Array Processing
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 39
Parallel Arrays
• Arrays are parallel if corresponding
components hold related information
Java Programming: From Problem Analysis to Program Design, 3e 40
Arrays of Objects
• Can use arrays to manipulate objects
• Example: create array named array1 with N
objects of type T
T[] array1 = new T[N]
• Can instantiate array1 as follows:
for(int j=0; j <array1.length;
j++)
array1[j] = new T();
Java Programming: From Problem Analysis to Program Design, 3e 41
Array of String Objects
String[] nameList = new String[5];
nameList[0] = "Amanda Green";
nameList[1] = "Vijay Arora";
nameList[2] = "Sheila Mann";
nameList[3] = "Rohit Sharma";
nameList[4] = "Mandy Johnson";
Java Programming: From Problem Analysis to Program Design, 3e 42
Array of String Objects
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 43
Arrays of Objects (continued)
Clock[] arrivalTimeEmp = new Clock[100];
Java Programming: From Problem Analysis to Program Design, 3e 44
Instantiating Array Objects
for (int j = 0; j < arrivalTimeEmp.length; j++)
arrivalTimeEmp[j] = new Clock();
Java Programming: From Problem Analysis to Program Design, 3e 45
Instantiating Array Objects (continued)
arrivalTimeEmp[49].setTime(8, 5, 10);
Java Programming: From Problem Analysis to Program Design, 3e 46
Arrays and Variable Length
Parameter List
• The syntax to declare a variable length formal
parameter (list) is:
dataType ... identifier
Java Programming: From Problem Analysis to Program Design, 3e 47
Arrays and Variable Length
Parameter List (continued)
Java Programming: From Problem Analysis to Program Design, 3e 48
Arrays and Variable Length
Parameter List (continued)
Java Programming: From Problem Analysis to Program Design, 3e 49
Arrays and Variable Length
Parameter List (continued)
• A method can have both a variable length formal
parameter and other formal parameters; consider the
following method heading:
public static void myMethod(String
name, double num, int ... intList)
• The formal parameter name is of type String, the
formal parameter num is of type double, and the
formal parameter intList is of variable length
• The actual parameter corresponding to intList can
be an int array or any number of int variables and/or
int values
Java Programming: From Problem Analysis to Program Design, 3e 50
Arrays and Variable Length
Parameter List (continued)
• A method can have at most one variable
length formal parameter
• If a method has both a variable length
formal parameter and other types of formal
parameters, then the variable length formal
parameter must be the last formal parameter
of the formal parameter list
Java Programming: From Problem Analysis to Program Design, 3e 51
Two-Dimensional Arrays
Java Programming: From Problem Analysis to Program Design, 3e 52
Two-Dimensional Arrays
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 53
Two-Dimensional Arrays
(continued)
double[][] sales = new double[10][5];
Java Programming: From Problem Analysis to Program Design, 3e 54
Accessing Array Elements
• intExp1, intExp2 >= 0
• indexExp1 = row position
• indexExp2 = column position
Java Programming: From Problem Analysis to Program Design, 3e 55
Accessing Array Elements
(continued)
Java Programming: From Problem Analysis to Program Design, 3e 56
Two-Dimensional Arrays and the
Instance Variable length
• This statement declares and instantiates a two-
dimensional array matrix of 20 rows and 15
columns
• The value of the expression:
matrix.length
is 20, the number of rows
Java Programming: From Problem Analysis to Program Design, 3e 57
Two-Dimensional Arrays and the
Instance Variable length
(continued)
• Each row of matrix is a one-dimensional array;
matrix[0], in fact, refers to the first row
• The value of the expression:
matrix[0].length
is 15, the number of columns in the first row
• matrix[1].length gives the number of
columns in the second row, which in this case is 15,
and so on
Java Programming: From Problem Analysis to Program Design, 3e 58
Two-Dimensional Arrays: Special
Cases
Java Programming: From Problem Analysis to Program Design, 3e 59
Two-Dimensional Arrays: Special
Cases (continued)
•Create columns
Java Programming: From Problem Analysis to Program Design, 3e 60
Two-Dimensional Array Initialization
During Declaration
Java Programming: From Problem Analysis to Program Design, 3e 61
Two-Dimensional Array Initialization
During Declaration (continued)
• To initialize a two-dimensional array when it is
declared
- The elements of each row are enclosed within
braces and separated by commas
- All rows are enclosed within braces
Java Programming: From Problem Analysis to Program Design, 3e 62
Two-Dimensional Array Initialization
During Declaration (continued)
Java Programming: From Problem Analysis to Program Design, 3e 63
Two-Dimensional Arrays
(continued)
• Three ways to process 2-D arrays
– Entire array
– Particular row of array (row processing)
– Particular column of array (column processing)
• Processing algorithms similar to processing
algorithms of one-dimensional arrays
Java Programming: From Problem Analysis to Program Design, 3e 64
Two-Dimensional Arrays:
Processing
Initialization
for (row = 0; row < matrix.length; row++)
for (col = 0; col < matrix[row].length;
col++)
matrix[row][col] = 10;
Print
for (row = 0; row < matrix.length; row++)
{
for (col = 0; col < matrix[row].length;
col++)
System.out.printf("%7d", matrix[row][col]);
System.out.println();
}
Java Programming: From Problem Analysis to Program Design, 3e 65
Two-Dimensional Arrays:
Processing (continued)
Input
for (row = 0; row < matrix.length; row++)
for (col = 0; col < matrix[row].length;
col++)
matrix[row][col] = console.nextInt();
Sum by Row
for (row = 0; row < matrix.length; row++)
{
sum = 0;
for (col = 0; col < matrix[row].length;
col++)
sum = sum + matrix[row][col];
System.out.println("Sum of row " + (row + 1)
+ " = "+ sum);
}
Java Programming: From Problem Analysis to Program Design, 3e 66
Two-Dimensional Arrays:
Processing (continued)
Sum by Column
for (col = 0; col < matrix[0].length; col++)
{
sum = 0;
for (row = 0; row < matrix.length; row++)
sum = sum + matrix[row][col];
System.out.println("Sum of column " + (col + 1)
+ " = " + sum);
}
Java Programming: From Problem Analysis to Program Design, 3e 67
Two-Dimensional Arrays:
Processing (continued)
Largest Element in Each Row
for (row = 0; row < matrix.length; row++)
{
largest = matrix[row][0];
for (col = 1; col < matrix[row].length;
col++)
if (largest < matrix[row][col])
largest = matrix[row][col];
System.out.println("The largest element of row "
+ (row + 1) + " = " + largest);
}
Java Programming: From Problem Analysis to Program Design, 3e 68
Two-Dimensional Arrays:
Processing (continued)
Largest Element in Each Column
for (col = 0; col < matrix[0].length; col++)
{
largest = matrix[0][col];
for (row = 1; row < matrix.length; row++)
if (largest < matrix[row][col])
largest = matrix[row][col];
System.out.println("The largest element of col "
+ (col + 1) + " = " + largest);
}
Java Programming: From Problem Analysis to Program Design, 3e 69
Search
• Necessary components to search a list
– Array containing the list
– Length of the list
– Item for which you are searching
• After search completed
– If item found, report “success,” return location
in array
– If item not found, report “failure”
Java Programming: From Problem Analysis to Program Design, 3e 70
Search (continued)
• Suppose that you want to determine whether 27 is in the
list
• First compare 27 with list[0]; that is, compare 27
with 35
• Because list[0] ≠ 27, you then compare 27 with
list[1]
• Because list[1] ≠ 27, you compare 27 with the next
element in the list
• Because list[2] = 27, the search stops
• This search is successful
Java Programming: From Problem Analysis to Program Design, 3e 71
Search (continued)
• Let’s now search for 10
• The search starts at the first element in the
list; that is, at list[0]
• Proceeding as before, we see that this time
the search item, which is 10, is compared
with every item in the list
• Eventually, no more data is left in the list to
compare with the search item; this is an
unsuccessful search
Java Programming: From Problem Analysis to Program Design, 3e 72
Sorting a List
• Bubble sort
– Suppose list[0...n - 1] is a list of n elements,
indexed 0 to n - 1
– We want to rearrange; that is, sort, the elements of list
in increasing order
– The bubble sort algorithm works as follows:
• In a series of n - 1 iterations, the successive elements,
list[index] and list[index + 1] of list are
compared
• If list[index] is greater than list[index + 1],
then the elements list[index] and list[index + 1]
are swapped, that is, interchanged
Java Programming: From Problem Analysis to Program Design, 3e 73
Bubble Sort
Java Programming: From Problem Analysis to Program Design, 3e 74
Bubble Sort (continued)
Java Programming: From Problem Analysis to Program Design, 3e 75