0% found this document useful (0 votes)
4 views31 pages

Chapter 08

1

Uploaded by

ali.zetawy2005
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)
4 views31 pages

Chapter 08

1

Uploaded by

ali.zetawy2005
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

Tariq Daradkeh

Spring 2026

CS310 Advanced Programming Language – JAVA

Chapter 8 Multidimensional Arrays

1
Motivations
Thus far, you have used one-dimensional arrays to model linear
collections of elements. You can use a two-dimensional array to
represent a matrix or a table. For example, the following table that
describes the distances between the cities can be represented
using a two-dimensional array.
Distance Table (in miles)

Chicago Boston New York Atlanta Miami Dallas Houston

Chicago 0 983 787 714 1375 967 1087


Boston 983 0 214 1102 1763 1723 1842
New York 787 214 0 888 1549 1548 1627
Atlanta 714 1102 888 0 661 781 810
Miami 1375 1763 1549 661 0 1426 1187
Dallas 967 1723 1548 781 1426 0 239

Houston 1087 1842 1627 810 1187 239 0


1723 1548 781 1426 0 239
2
Motivations

3
Declare/Create Two-dimensional Arrays
// Declare array ref var
dataType[][] refVar;

// Create array and assign its reference to variable


refVar = new dataType[10][10];

// Combine declaration and creation in one statement


dataType[][] refVar = new dataType[10][10];

// Alternative syntax
dataType refVar[][] = new dataType[10][10];

4
Declaring Variables of Two-dimensional
Arrays and Creating Two-dimensional
Arrays
int[][] matrix = new int[10][10];
or
int matrix[][] = new int[10][10];
matrix[0][0] = 3;

for (int i = 0; i < [Link]; i++)


for (int j = 0; j < matrix[i].length; j++)
matrix[i][j] = (int)([Link]() * 1000);

double[][] x;

5
Two-dimensional Array Illustration

[Link]? 5 [Link]? 4
matrix[0].length? 5 array[0].length? 3

6
Declaring, Creating, and Initializing Using Shorthand
Notations

You can also use an array initializer to declare, create and


initialize a two-dimensional array. For example,

int[][] array = {
int[][] array = new int[4][3];
{1, 2, 3}, array[0][0] = 1; array[0][1] = 2; array[0][2] = 3;
{4, 5, 6}, Same as array[1][0] = 4; array[1][1] = 5; array[1][2] = 6;
{7, 8, 9}, array[2][0] = 7; array[2][1] = 8; array[2][2] = 9;
{10, 11, 12} array[3][0] = 10; array[3][1] = 11; array[3][2] = 12;
};

7
Lengths of Two-dimensional Arrays

int[][] x = new int[3][4];

8
Lengths of Two-dimensional Arrays, cont.

int[][] array = { [Link]


{1, 2, 3}, array[0].length
{4, 5, 6},
array[1].length
{7, 8, 9},
array[2].length
{10, 11, 12}
array[3].length
};

array[4].length ArrayIndexOutOfBoundsException

9
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 a ragged array. For example,
int[][] matrix = {
{1, 2, 3, 4, 5},
[Link] is 5
{2, 3, 4, 5}, matrix[0].length is 5
{3, 4, 5}, matrix[1].length is 4
{4, 5}, matrix[2].length is 3
matrix[3].length is 2
{5}
matrix[4].length is 1
};

10
Ragged Arrays, cont.

11
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)
7. (Random shuffling)

12
Initializing arrays with input values
[Link] input = new Scanner([Link]);
[Link]("Enter " + [Link] + " rows and " +
matrix[0].length + " columns: ");
for (int row = 0; row < [Link]; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = [Link]();
}
}

13
Initializing arrays with random values

for (int row = 0; row < [Link]; row++) {


for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = (int)([Link]() * 100);
}
}

14
Printing arrays
for (int row = 0; row < [Link]; row++) {
for (int column = 0; column < matrix[row].length; column++) {
[Link](matrix[row][column] + " ");
}

[Link]();
}

15
Summing all elements
int total = 0;
for (int row = 0; row < [Link]; row++) {
for (int column = 0; column < matrix[row].length; column++) {
total += matrix[row][column];
}
}

16
Summing elements by column
for (int column = 0; column < matrix[0].length; column++) {
int total = 0;
for (int row = 0; row < [Link]; row++)
total += matrix[row][column];
[Link]("Sum for column " + column + " is "
+ total);
}

17
Random shuffling
for (int i = 0; i < [Link]; i++) {
for (int j = 0; j < matrix[i].length; j++) {
int i1 = (int)([Link]() * [Link]);
int j1 = (int)([Link]() * matrix[i].length);
// Swap matrix[i][j] with matrix[i1][j1]
int temp = matrix[i][j];
matrix[i][j] = matrix[i1][j1];
matrix[i1][j1] = temp;
}
}

18
Passing Tow-Dimensional Arrays to Methods

PassTwoDimensionalArray

PassTwoDimensionalArray

19
Problem: Grading Multiple-Choice Test

Students’ answer Objective: write a


program that grades
multiple-choice test.

PassTwoDimensionalArray

PassTwoDimensionalArray

20
Problem: Finding Two Points
Nearest to Each Other [Link]
[Link]/dsanimation/Clos
[Link]

PassTwoDimensionalArray

PassTwoDimensionalArray
21
What is Sudoku?

[Link]

5 3 7 [Link]
6 1 9 5
9 8 6
m/dsanimation/[Link]
8 6 3
4 8 3 1
7 2 6
6
4 1 9 5
8 7 9

22
Every row contains the numbers 1 to 9

5 3 7 5 3 4 6 7 8 9 1 2
6 1 9 5 6 7 2 1 9 5 3 4 8
9 8 6 1 9 8 3 4 2 5 6 7
8 6 3 8 5 9 7 6 1 4 2 3
4 8 3 1 4 2 6 8 5 3 7 9 1
7 2 6 7 1 3 9 2 4 8 5 6
6 9 6 1 5 3 7 2 8 4
4 1 9 5 2 8 7 4 1 9 6 3 5
8 7 9 3 4 5 2 8 6 1 7 9

23
Every column contains the numbers 1 to 9

5 3 7 5 3 4 6 7 8 9 1 2
6 1 9 5 6 7 2 1 9 5 3 4 8
9 8 6 1 9 8 3 4 2 5 6 7
8 6 3 8 5 9 7 6 1 4 2 3
4 8 3 1 4 2 6 8 5 3 7 9 1
7 2 6 7 1 3 9 2 4 8 5 6
6 9 6 1 5 3 7 2 8 4
4 1 9 5 2 8 7 4 1 9 6 3 5
8 7 9 3 4 5 2 8 6 1 7 9

24
Every 3×3 box contains the numbers 1 to 9

5 3 7 5 3 4 6 7 8 9 1 2
6 1 9 5 6 7 2 1 9 5 3 4 8
9 8 6 1 9 8 3 4 2 5 6 7
8 6 3 8 5 9 7 6 1 4 2 3
4 8 3 1 4 2 6 8 5 3 7 9 1
7 2 6 7 1 3 9 2 4 8 5 6
6 9 6 1 5 3 7 2 8 4
4 1 9 5 2 8 7 4 1 9 6 3 5
8 7 9 3 4 5 2 8 6 1 7 9

25
Checking Whether a Solution Is Correct
5 3 7 5 3 4 6 7 8 9 1 2
6 1 9 5 6 7 2 1 9 5 3 4 8
9 8 6 1 9 8 3 4 2 5 6 7
8 6 3 8 5 9 7 6 1 4 2 3
4 8 3 1 4 2 6 8 5 3 7 9 1
7 2 6 7 1 3 9 2 4 8 5 6
6 9 6 1 5 3 7 2 8 4
4 1 9 5 2 8 7 4 1 9 6 3 5
8 7 9 3 4 5 2 8 6 1 7 9

CheckSudokuSolution

CheckSudokuSolution

26
Multidimensional Arrays
Occasionally, you will 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.

27
Multidimensional 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}}
};

Which student Which exam Multiple-choice or essay

scores[ i ] [ j ] [ k ]

28
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. Your program displays the total score
for each student.

TotalScore

TotalScore

29
Problem: Weather Information
Suppose a meteorology station records the temperature
and humidity at each hour of every day and stores the data
for the past ten days in a text file named [Link]. Each
line of the file consists of four numbers that indicate the
day, hour, temperature, and humidity. Your task is to write a
program that calculates the average daily temperature and
humidity for the 10 days.

1 1 76.4 0.92 10 24 98.7 0.74


1 2 77.7 0.93 1 2 77.7 0.93
... ...
10 23 97.7 0.71 10 23 97.7 0.71
10 24 98.7 0.74 1 1 76.4 0.92
Weather

(a) (b)
Weather

30
Problem: Guessing Birthday
Listing 4.3, [Link], gives a program
that guesses a birthday. The program can be
simplified by storing the numbers in five sets in
a three-dimensional array, and it prompts the
user for the answers using a loop.

GuessBirthdayUsingArray

GuessBirthdayUsingArray

31

You might also like