CSE215 Chapter 8 Multi-dim-Arrays
CSE215 Chapter 8 Multi-dim-Arrays
CSE215 Chapter 8 Multi-dim-Arrays
Multi-Dimensional Arrays
1
1-Dimentional and 2-Dimentional Arrays
In the previous chapter we used 1-dimensional arrays to
model linear collections of elements.
myArray: 6 4 1 9 7 3 2 8
1 4 1 5 7 1 8 8
5 4 3 9 1 3 3 5
3 5 2 5 0 7 4 3
9 7 1 9 9 8 6 2
2
Two-dimensional Array Illustration
matrix.length? 5 array.length? 4
matrix[0].length? 5 array[0].length? 3
3
Declare/Create Two-dimensional Arrays
// Alternative syntax
dataType refVar[][] = new dataType[10][10];
4
Code Examples
// Note that a matrix has rows and columns. First index
// is for rows and second index for columns.
double[][] distance; //declare matrix distance
distance[0][0] = 295; //assign 295 to position [0,0]
6
Lengths of Two-dimensional Arrays
7
Lengths of Two-dimensional Arrays
Runtime Error:
array[4].length; //ArrayIndexOutOfBoundsException
8
Ragged Arrays
Each row in a two-dimensional array is itself an array. So,
the rows can have different lengths. Such an array is known
as ragged array. For example,
int[][] matrix = { matrix.length is 5
{1, 2, 3, 4, 5}, matrix[0].length is 5
{2, 3, 4, 5}, matrix[1].length is 4
{3, 4, 5}, matrix[2].length is 3
{4, 5}, matrix[3].length is 2
{5} matrix[4].length is 1
};
9
Ragged Arrays, cont.
10
Processing Two-Dimensional Arrays
See the examples in the text.
1. Initializing arrays with input values
2. Printing arrays
3. Summing all elements
4. Summing all elements by column
5. Which row has the largest sum
6. Finding the smallest index of the largest element
11
Initializing arrays with input values
12
Initializing arrays with random values
13
Printing arrays
14
Summing all elements
int total = 0;
for (int row = 0; row < grades.length; row++) {
for (int column = 0; column < grades[row].length; column++)
{
total = total + grades[row][column];
}
}
15
Summing elements by column
16
Passing Two-Dimensional Arrays to Methods
import java.util.Scanner;
public class PassTwoDimensionalArray {
public static void main(String[] args) {
int[][] table = getArray(); // call method getArray()
// Display sum of elements
System.out.println("\nSum of all elements is " + sum(table));
}
return total;
}
}
18
Problem: Grading Multiple-Choice Test
19
Problem: Grading Multiple-Choice Test
public class GradeExam {
public static void main(String args[])
{ // Students' answers to the questions
char[][] answers = {
{'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'},
{'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'},
{'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'},
{'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}};
20
Problem: Grading Multiple-Choice Test
// code continues from previous slide
21
Multidimensional Arrays
Occasionally, we need to represent n-dimensional data
structures.
In Java, you can create n-dimensional arrays for any
integer n.
The way to declare two-dimensional array variables and
create two-dimensional arrays can be generalized to
declare n-dimensional array variables and create n-
dimensional arrays for n >= 3.
22
Problem: Calculating Total Scores
Objective: write a program that calculates the total score
for students in a class. Suppose the scores are stored in a
three-dimensional array named scores. The first index in
scores refers to a student, the second refers to an exam,
and the third refers to the part of the exam. Suppose there
are 7 students, 5 exams, and each exam has two parts--the
multiple-choice part and the programming part. So,
scores[i][j][0] represents the score on the multiple-choice
part for the i’s student on the j’s exam.
The program displays the total score for each student.
23
3-Dimensional Arrays
double[][][] scores =
{
{{7.5, 20.5}, {9.0, 22.5}, {15, 33.5}, {13, 21.5}, {15, 2.5}},
{{4.5, 21.5}, {9.0, 22.5}, {15, 34.5}, {12, 20.5}, {14, 9.5}},
{{6.5, 30.5}, {9.4, 10.5}, {11, 33.5}, {11, 23.5}, {10, 2.5}},
{{6.5, 23.5}, {9.4, 32.5}, {13, 34.5}, {11, 20.5}, {16, 7.5}},
{{8.5, 26.5}, {9.4, 52.5}, {13, 36.5}, {13, 24.5}, {16, 2.5}},
{{9.5, 20.5}, {9.4, 42.5}, {13, 31.5}, {12, 20.5}, {16, 6.5}}
};
scores[ i ] [ j ] [ k ]
24
Problem: Calculating Total Scores
public class TotalScore
{
//Main method
public static void main(String args[]) {
double[][][] scores =
{ { {7.5, 20.5}, {9.0, 22.5}, {15, 33.5}, {13, 21.5}, {15, 2.5} },
{ {4.5, 21.5}, {9.0, 22.5}, {15, 34.5}, {12, 20.5}, {14, 9.5} },
{ {6.5, 30.5}, {9.4, 10.5}, {11, 33.5}, {11, 23.5}, {10, 2.5} },
{ {6.5, 23.5}, {9.4, 32.5}, {13, 34.5}, {11, 20.5}, {16, 7.5} },
{ {8.5, 26.5}, {9.4, 52.5}, {13, 36.5}, {13, 24.5}, {16, 2.5} },
{ {9.5, 20.5}, {9.4, 42.5}, {13, 31.5}, {12, 20.5}, {16, 6.5} },
{ {1.5, 29.5}, {6.4, 22.5}, {14, 30.5}, {10, 30.5}, {16, 6.0} } };
// Calculate and display total score for each student
for (int i = 0; i < scores.length; i++) {
double totalScore = 0;
for (int j = 0; j < scores[i].length; j++)
for (int k = 0; k < scores[i][j].length; k++)
totalScore = totalScore + scores[i][j][k];
System.out.println("Student " + i + "'s score is " + totalScore);
}
}
}
26