multi-dimensional arrays
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 PresentationTRANSCRIPT
© 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