multi-dimensional arrays

20
© 2010 Pearson Addison-Wesley. All rights reserved. Multi-Dimensional Arrays Jan 22, 2014 These slides are based on the autho r’s slides

Upload: candace-cantrell

Post on 01-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Jan 22, 2014. Multi-Dimensional Arrays. These slides are based on the author ’ s slides. Two-Dimensional Arrays. A two-dimensional array is an array of arrays. It can be thought of as having rows and columns. column 0. column 1. column 2. column 3. row 0. row 1. row 2. row 3. - PowerPoint PPT Presentation

TRANSCRIPT

© 2010 Pearson Addison-Wesley. All rights reserved.

Multi-Dimensional ArraysJan 22, 2014

These slides are based on the author’s slides

8-2

Two-Dimensional Arrays A two-dimensional array is an array of arrays. It can be thought of as having rows and columns.

row 0

column 1 column 2 column 3column 0

row 1

row 2

row 3

8-3

Declaring a two-dimensional array requires two sets of brackets and two size declarators◦ The first one is for the number of rows◦ The second one is for the number of columns.

double[][] scores = new double[3][4];

The two sets of brackets in the data type indicate that the scores variable will reference a two-dimensional array.

Notice that each size declarator is enclosed in its own set of brackets.

Two-Dimensional Arrays

two dimensional array rows columns

8-4

Accessing Two-Dimensional Array Elements

When processing the data in a two-dimensional array, each element has two subscripts:◦ one for its row and ◦ another for its column.

8-5

Accessing Two-Dimensional Array Elements

scores[0][3]scores[0][2]scores[0][1]scores[0][0]row 0

column 1 column 2 column 3column 0

row 1

row 2

The scores variableholds the address of a2D array of doubles.

Address

scores[1][3]scores[1][2]scores[1][1]scores[1][0]

scores[2][3]scores[2][2]scores[2][1]scores[2][0]

8-6

Accessing Two-Dimensional Array Elements

Accessing one of the elements in a two-dimensional array requires the use of both subscripts.

scores[2][1] = 95;

0000row 0

column 1 column 2 column 3column 0

row 1

row 2

Address

0000

00950

The scores variableholds the address of a2D array of doubles.

8-7

Accessing Two-Dimensional Array Elements

Programs that process two-dimensional arrays can do so with nested loops.

To fill the scores array:

for (int row = 0; row < 3; row++){ for (int col = 0; col < 4; col++){

System.out.print("Enter a score: "); scores[row][col] = keyboard.nextDouble(); }}

Number of rows, not the largest subscript

Number of columns, not the largest subscript

keyboard references a Scanner object

8-8

Accessing Two-Dimensional Array Elements

To print out the scores array:

for (int row = 0; row < 3; row++){ for (int col = 0; col < 4; col++){

System.out.println(scores[row][col]); }}

See example: CorpSales.java

8-9

Initializing a Two-Dimensional Array Initializing a two-dimensional array requires enclosing each row’s initialization list in its own set of braces.

int[][] numbers = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

Java automatically creates the array and fills its elements with the initialization values.◦ row 0 {1, 2, 3}◦ row 1 {4, 5, 6}◦ row 2 {7, 8, 9}

Declares an array with three rows and three columns.

8-10

Initializing a Two-Dimensional Array

321row 0

column 1 column 2column 0

row 1

row 2

Address

654

987

The numbers variableholds the address of a2D array of int values.

int[][] numbers = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

produces:

8-11

The length Field Two-dimensional arrays are arrays of one-dimensional arrays.

The length field of the array gives the number of rows in the array.

Each row has a length constant tells how many columns is in that row.

Each row can have a different number of columns.

8-12

The length Field To access the length fields of the array:int[][] numbers = { { 1, 2, 3, 4 },

{ 5, 6, 7 },

{ 9, 10, 11, 12 } };

for (int row = 0; row < numbers.length; row++)

{

for (int col = 0; col < numbers[row].length; col++)

System.out.println(numbers[row][col]);

}

See example: Lengths.java

Number of rows Number of columns in this row.

The array can have variable length rows.

8-13

Summing The Elements of a Two-Dimensional Array

int[][] numbers = { { 1, 2, 3, 4 }, {5, 6, 7, 8}, {9, 10, 11, 12} };int total;total = 0;for (int row = 0; row < numbers.length; row++){ for (int col = 0; col < numbers[row].length; col++) total += numbers[row][col];}

System.out.println("The total is " + total);

8-14

Summing The Rows of a Two-Dimensional Array

int[][] numbers = {{ 1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};int total;

for (int row = 0; row < numbers.length; row++){ total = 0; for (int col = 0; col < numbers[row].length; col++) total += numbers[row][col]; System.out.println("Total of row " + row + " is " + total);}

8-15

Summing The Columns of a Two-Dimensional Array

int[][] numbers = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};int total;

for (int col = 0; col < numbers[0].length; col++){ total = 0; for (int row = 0; row < numbers.length; row++) total += numbers[row][col]; System.out.println("Total of column " + col + " is " + total);}

8-16

Ragged Arrays When the rows of a two-dimensional array are of different lengths, the array is known as a ragged array.

You can create a ragged array by creating a two-dimensional array with a specific number of rows, but no columns.

int [][] ragged = new int [4][];

Then create the individual rows.ragged[0] = new int [3];ragged[1] = new int [4];ragged[2] = null;ragged[3] = new int [2];

Arrays of Arrays Picture

scores[0][3]scores[0][2]scores[0][1]scores[0][0]row 0

column 1 column 2 column 3column 0

row 1

row 2

Address

scores[1][3]scores[1][2]scores[1][1]scores[1][0]

scores[2][3]scores[2][2]scores[2][1]scores[2][0]

Array of Arrays

Addressragged[0][]

ragged[1][]

null

ragged[3][]

ragged

ragged[0][0]

ragged[0][1]

ragged[0][2]

ragged[1][0]

ragged[1][1]

ragged[1][2]

ragged[1][3]

ragged[3][0]

ragged[3][1]

ragged[3][2]

Array of Arrays

Addressragged[0][]

ragged[1][]

null

ragged[3][]

ragged

ragged[0][0]

ragged[0][1]

ragged[0][2]

ragged[1][0]

ragged[1][1]

ragged[1][2]

ragged[1][3]

ragged[3][0]

ragged[3][1]

ragged[3][2]

Object reference

Array of objectreferences

8-20

More Than Two Dimensions Java does not limit the number of dimensions that an array may be.

More than three dimensions is hard to visualize, but can be useful in some programming problems.