Você está na página 1de 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 twodimensional array Learn about multidimensional arrays

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

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

One-Dimensional Arrays (continued)

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

One-Dimensional Arrays (continued)

intExp = number of components in array >= 0 0 <= indexExp <= intExp

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

Arrays
Array num: int[] num = new int[5];

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

Array List

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

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] numList[1] numList[2] numList[3] = = = = 5; 10; 15; 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] nameList[1] nameList[2] nameList[3] = = = = "Amanda Green"; "Vijay Arora"; "Sheila Mann"; "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 twodimensional 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

Você também pode gostar