You are on page 1of 77

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


foreach loop
• The syntax to use this for loop to process the
elements of an array is:
for (dataType identifier : arrayName)
statements

•identifier is a variable and the data type of


identifier is the same as the data type of the array
components

Java Programming: From Problem Analysis to Program Design, 3e 52


foreach loop (continued)
sum = 0;
for (double num : list)
sum = sum + num;
• The for statement in Line 2 is read: for each num in list
• The identifier num is initialized to list[0
• In the next iteration, the value of num is list[1], and so on
for (double num : numList)
{
if (max < num)
max = num;
}

Java Programming: From Problem Analysis to Program Design, 3e 53


Two-Dimensional Arrays

Java Programming: From Problem Analysis to Program Design, 3e 54


Two-Dimensional Arrays
(continued)

Java Programming: From Problem Analysis to Program Design, 3e 55


Two-Dimensional Arrays
(continued)
double[][] sales = new double[10][5];

Java Programming: From Problem Analysis to Program Design, 3e 56


Accessing Array Elements

• intExp1, intExp2 >= 0


• indexExp1 = row position
• indexExp2 = column position

Java Programming: From Problem Analysis to Program Design, 3e 57


Accessing Array Elements
(continued)

Java Programming: From Problem Analysis to Program Design, 3e 58


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 59


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 60
Two-Dimensional Arrays: Special
Cases

Java Programming: From Problem Analysis to Program Design, 3e 61


Two-Dimensional Arrays: Special
Cases (continued)

•Create columns

Java Programming: From Problem Analysis to Program Design, 3e 62


Two-Dimensional Array Initialization
During Declaration

Java Programming: From Problem Analysis to Program Design, 3e 63


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 64


Two-Dimensional Array Initialization
During Declaration (continued)

Java Programming: From Problem Analysis to Program Design, 3e 65


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 66


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 67
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 68
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 69


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 70
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 71


Multidimensional Arrays
• Can define three-dimensional arrays or n-dimensional
array (n can be any number)
• Syntax to declare and instantiate array
dataType[][]…[] arrayName = new
dataType[intExp1][intExp2]…[intExpn];
• Syntax to access component
arrayName[indexExp1][indexExp2]…[indexExpn]
• intExp1, intExp2, ..., intExpn = positive integers
• indexExp1,indexExp2, ..., indexExpn = non-negative integers

Java Programming: From Problem Analysis to Program Design, 3e 72


Loops to Process
Multidimensional Arrays

double[][][] carDealers = new double[10][5][7];

for (i = 0; i < 10; i++)


for (j = 0; j < 5; j++)
for (k = 0; k < 7; k++)
carDealers[i][j][k] = 10.00;

Java Programming: From Problem Analysis to Program Design, 3e 73


Programming Example:
Text Processing
• Program: reads given text; outputs the text
as is; prints number of lines and number of
times each letter appears in text
• Input: file containing text to be processed
• Output: file containing text, number of
lines, number of times letter appears in text

Java Programming: From Problem Analysis to Program Design, 3e 74


Programming Example Solution:
Text Processing
• An array of 26 representing the letters in the
alphabet
• Three methods
– copyText
– characterCount
– writeTotal
• Value in appropriate index incremented
using methods and depending on character
read from text
Java Programming: From Problem Analysis to Program Design, 3e 75
Chapter Summary
• Arrays
– Definition
– Uses
• Different Arrays
– One-dimensional
– Two-dimensional
– Multidimensional (n-dimensional)
– Arrays of objects
– Parallel arrays
Java Programming: From Problem Analysis to Program Design, 3e 76
Chapter Summary (continued)
• Declaring arrays
• Instantiating arrays
• Processing arrays
– Entire array
– Row processing
– Column processing
• Common operations and methods
performed on arrays
• Manipulating data in arrays
Java Programming: From Problem Analysis to Program Design, 3e 77

You might also like