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

lecture_8_MultiArray.ppt

The document provides an overview of multi-dimensional arrays in programming, specifically focusing on 1-dimensional and 2-dimensional arrays. It includes examples of declaring, creating, and initializing arrays, as well as operations such as summing elements and processing arrays. Additionally, it discusses ragged arrays and introduces n-dimensional arrays, along with practical applications like grading multiple-choice tests and calculating total scores for students.

Uploaded by

yadullahgoni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

lecture_8_MultiArray.ppt

The document provides an overview of multi-dimensional arrays in programming, specifically focusing on 1-dimensional and 2-dimensional arrays. It includes examples of declaring, creating, and initializing arrays, as well as operations such as summing elements and processing arrays. Additionally, it discusses ragged arrays and introduces n-dimensional arrays, along with practical applications like grading multiple-choice tests and calculating total scores for students.

Uploaded by

yadullahgoni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

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

Now think of each element in the array to be a


1-dimentional array. This gives us a matrix.

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

// Declare array reference variable


dataType[][] refVar; //each [] represents one dimension

// 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
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]

int[][] grades = new int[10][10]; //declare & create

for (int i = 0; i < grades.length; i++) //rows


for (int j = 0; j < grades[i].length; j++) //columns
grades[i][j] = (int)(Math.random() * 100);

for (int i = 0; i < 10; i++) //process rows


{ for (int j = 0; j < 10; j++) //process columns
System.out.print (" " + grades[i][j]);
System.out.println();
}

5
Initialization 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;
};

6
Lengths of Two-dimensional Arrays

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

7
Lengths of Two-dimensional Arrays

int[][] array = { array.length


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

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
7. Random shuffling

11
Initializing arrays with input values

java.util.Scanner input = new Scanner(System.in);

int[][] grades = new int[10][10];


System.out.println("Enter " + grades.length + " rows
and " + grades[0].length + " columns: ");
for (int row = 0; row < grades.length; row++) {
for (int column = 0; column < grades[row].length; column++)
{
grades[row][column] = input.nextInt();
}
}

12
Initializing arrays with random values

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


for (int column = 0; column < gardes[row].length; column++)
{
grades[row][column] = (int)(Math.random() * 100);
}
}

13
Printing arrays

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


for (int column = 0; column < grades[row].length; column++)
{
System.out.print(grades[row][column] + " ");
}
System.out.println();
}

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

for (int column = 0; column < matrix[0].length; column++)


{
int total = 0;
for (int row = 0; row < matrix.length; row++)
total = total + matrix[row][column];
System.out.println("Sum for column " + column + " is "
+ total);
}

16
Random shuffling

for (int i = 0; i < matrix.length; i++) {


for (int j = 0; j < matrix[i].length; j++) {
int i1 = (int)(Math.random() * matrix.length);
int j1 = (int)(Math.random() * 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;
}
}

17
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));
}

public static int[][] getArray() {


Scanner input = new Scanner(System.in);// Create a Scanner
int[][] m = new int[3][4];// declare and create array m
System.out.println("Enter " + m.length + " rows and " +
m[0].length + " columns: "); //prompt
for (int i = 0; i < m.length; i++)
for (int j = 0; j < m[i].length; j++)
m[i][j] = input.nextInt();
return m;
}
// code continues next slide
18
Passing Two-Dimensional Arrays to Methods
// code continues from previous slide

public static int sum(int[][] matrix)


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

return total;
}
}

19
Problem: Grading Multiple-Choice Test

Students’ answer Objective: write a


program that grades
multiple-choice test.

20
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'}};

// Key to the questions


char[] keys = {'D','B','D','C','C','D','A','E','A','D'};

// code continue next slide

21
Problem: Grading Multiple-Choice Test
// code continues from previous slide

// Grade all students


for (int i = 0; i < answers.length; i++)
{
// Grade one student
int correctCount = 0; // reset count for each student
for (int j = 0; j < answers[i].length; j++)
{
if (answers[i][j] == keys[j])
correctCount++;
}

System.out.println("Student " + i + "'s correct


count is " + correctCount);
}
}
}

22
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.

23
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.

24
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}}
};

25
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);
}
}
}

See Listing 8.5 for another example - Weather data (day/hour/temperature/Humidity


26

You might also like