0% found this document useful (0 votes)
12 views

Arrays 2 D

2d arrays

Uploaded by

Pope Braxton
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Arrays 2 D

2d arrays

Uploaded by

Pope Braxton
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Two-Dimensional Arrays

15-110 Summer 2010


Margaret Reid-Miller
Two-Dimensional Arrays
• Arrays that we have consider up to now are one-
dimensional arrays, a single line of elements.
• Often data come naturally in the form of a table, e.g.,
spreadsheet, which need a two-dimensional array.
• Examples:
• Lab book of multiple readings over several days
• Periodic table
• Movie ratings by multiple reviewers.
• Each row is a different reviewer
• Each column is a different movie

Summer 2010 15-110 (Reid-Miller) 2


Two-Dimensional Arrays
• Two-dimensional (2D) arrays are indexed by two
subscripts, one for the row and one for the column.
• Example:
rating
row col movie (second index)
0 1 2 3
rating[0][2] = 2! reviewer 0 4 6 2 5
!rating[1][3] = 8! (first 1 7 9 4 8
index)
2 6 9 3 7

Summer 2010 15-110 (Reid-Miller) 3


Similarity with 1D Arrays
• Each element in the 2D array must by the same type,
• either a primitive type or object type.
• Subscripted variables can be use just like a variable:
! rating[0][3] = 10;!

• Array indices must be of type int and can be a


literal, variable, or expression.
rating[3][j] = j;!

• If an array element does not exists, the Java runtime


system will give you an
! !ArrayIndexOutOfBoundsException

Summer 2010 15-110 (Reid-Miller) 4


Declaring 2D Arrays
• Declare a local variable rating that references a 2D
array of int:
int[][] rating;
• Declare a field family that reference a 2D array of
GiftCards:
private GiftCard[][] family;!
• Create a 2D array with 3 rows and 4 columns and
assign the reference to the new array to rating:
rating = new int[3][4];!

• Shortcut to declare and create a 2D array:


int[][] rating = new int[3][4];
Summer 2010 15-110 (Reid-Miller) 5
Example 1
• Find the average rating by the reviewer in row 2.

int sum = 0;!

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


! sum += rating[2][col];!
}!
double average = (double) sum / 4;!
movie
0 1 2 3
0 4 6 2 5
reviewer
1 7 9 4 8
2 6 9 3 7
Summer 2010 15-110 (Reid-Miller) 6
Size of 2D Arrays
• When you write a method that has a 2D array as a
parameter, how do you determine the size of the
array?
words !
Hint:
• Consider a variable words, a 1D 0 this!
array of String references.
• What is the length of the array? 1 that!
• What is the length of the word at 2
index 2? what!

Summer 2010 15-110 (Reid-Miller) 7


2D Array Implementation
• A 2D array is a 1D array of (references to) 1D arrays.

int[][] rating = new int[3][4];!

0 1 2 3

0
1
2

Summer 2010 15-110 (Reid-Miller) 8


Size of 2D Arrays
• Given
! !int[][] rating = new int[3][4];

• What is the value of rating.length?


Answer: 3, the number of rows (first dimension)

• What is the value of rating[0].length? !

Answer: 4, the number of columns (second dimension)

Summer 2010 15-110 (Reid-Miller) 9


Example 2
• Find the number of ratings above the value of the
parameter.
public int countAbove(int[][] rating, int num) {!

int count = 0;! number of rows

for (int row = 0; row < rating.length!


; row++) {!

for (int col = 0; col < rating[0].length!; col++) {!


! if (rating[row][col] > num)!
count++; !
}! number of columns
}!
return count;!
} !
Summer 2010 15-110 (Reid-Miller) 10
Example 3
movie
• Print the average rating for 0 1 2 3
the movie in column 3. 0 4 6 2 5

reviewer
1 7 9 4 8
2 6 9 3 7
int sum = 0;!

for (int row = 0; row < rating.length


______________ ; row++) {!

!sum += rating[_____][____];!
row 3!
}!

System.out.println((double) sum / rating.length


______________ );!

Summer 2010 15-110 (Reid-Miller) 11


Ragged Arrays
• Since a 2D array is a 1D array of references to 1D
arrays, each of these latter 1D arrays (rows) can
have a different length.

• How? Use an initializer list.


row 1 row 2
! !int[][] rating = { {3,5,7,9}, {4,2}, !
{5,7,8,6}, {6} };!
3 5 7 9
4 2
5 7 8 6
6
Summer 2010 15-110 (Reid-Miller) 12
Example 3 Revisited
• Print the average rating for the movie in column 3.
int count = 0;!
double sum = 0;!

for (int row = 0; row < rating.length; row++) {!

rating[row].length > 3) {!
! if (_____________________
3 5 7 9
row 3!
sum += rating[_____][_____];! 4 2
count++;!
}! 5 7 8 6
}!
6
if (count > 0) {!
System.out.println((double) sum / count);!
}!

Summer 2010 15-110 (Reid-Miller) 13


2D Array of Object References
• Recall that creating an array of object
references fills the array with null values.
• Example:

GiftCard[][] family = new GiftCard[3][4]!

null

Summer 2010 15-110 (Reid-Miller) 14


2D Array of Object References
• Need to create the objects and assign the
references to the array elements.
• Example:
!family[0][1] = new GiftCard(“Macy’s”, 50.0);!
!family[1][3] = new GiftCard(“CVS”, 15.0);!

Macy’s

CVS

null
Summer 2010 15-110 (Reid-Miller) 15
Example 4
• Print the total value of the gift cards for each family
member (rows): printValueOfRows(family); !
GiftCard[][]! data) {!
public static void printValueOfRows(______________
data.length
for (int row = 0; row < __________________; row++) {!

0.0!
double total = ___________; // find total for the row!

data[row].length col++) {!
for (int col = 0; col < ___________________;

null
if (data[row][col] != ___________) {!
total += data[row][col].getBalance();!
}!
}!
System.out.println(“Row “ + row + “: $“ + total);!
}!
}!
Summer 2010 15-110 (Reid-Miller) 16

You might also like