25
2 dimensional arrays Steven Wood ©2005

2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Embed Size (px)

Citation preview

Page 1: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

2 dimensional arrays

Steven Wood ©2005

Page 2: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Arrays dimensions

Java allows arrays with many subscripts

2-D examples Chess board Excel spreadsheet

Page 3: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

3D example

Can have more than 2 dimensions!

Page 4: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

How to think of a 2d array

A 2-D array is an array whose components are themselves arrays

Page 5: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Creating an 2d array

A two-dimensional array is an array of arrays.

In this example:The first index is the 12 months, indexed

from 0 to 11. Each month array is an array of 31 days, indexed from 0 to 30

double rainfall[][] = new double[12][31];

Month index Day index

Page 6: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Using initializer lists

int myTable[][] = {

{23, 45, 65, 34, 21, 67, 78},

{46, 14, 18, 46, 98, 63, 88},

{98, 81, 64, 90, 21, 14, 23},

{54, 43, 55, 76, 22, 43, 33}

};

Page 7: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Setting each value individually

int myTable[][]; myTable[0,0] = 23; myTable[0,1] = 45; … myTable[3,5] = 43; myTable[3,6] = 33;

Page 8: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Example

Track daily temperature for 4 weeksdouble[][] weektemp = new double[4][7]; 

Page 9: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Finding # of rows (weeks)

to determine the number of rows in a 2D array, use length

int numWeeks = weektemp.length; //4

Page 10: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Finding # of columns (days)

to determine the number of columns in a 2D array, find length of first row

int numDays = weektemp[0].length; // 7

Side note: a 2d array does not have to be rectangular, but we won’t look at this situation

Page 11: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Our example

Create a computized mark book for a teacher

Assume only 3 students and 3 marks for each

Assume all marks have same weighting (e.g. all percents)

MarkBook

-String theClass[][]-String name

+MarkBook(String name, int students, int marks)

+initClass()

+displayClass()

Page 12: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

A model of the information

0 1 2 3 4

0

1 Thomas 43 80 84

2 Robert 72 76 66

3 Katie 75 90 80

4

Storestudentaverage

in these

Classaverage

Name + 3 marks + Average 5 columns

blan

k +

3 st

uden

ts+

ave

rage

5

colu

mns

Page 13: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Sample runs…

Page 14: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #1…

Download the program MarkBook.javaFind the constructor

Find the line that declares & allocates space for the array

It needs to be completedHow big should the array be (look at the

previous slide)Make sure that you use variables to set the size!

Page 15: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #2…

Find the initClass() methodUse the picture of the array contents from 2

slides previousRemove the comment marks and complete the

assignment statements that fill the array with values. E.g.

//theClass[2][0] = theClass[2][0] = “Robert”;

Etc.

Page 16: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Example of using a loops

int[][] array = new int[10][5]; // print array in rectangular form for (int r=0; r<array.length; r++) { //# of rows

// print columns for each rowfor (int c=0; c<array[r].length; c++) { System.out.print(" " + array[r][c]);}

System.out.println(""); }

Page 17: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #3…

In MarkBook.java find the displayClass method

Use the information on the last slide to complete the method so that it displays the contents of the array

Update the main method so that you use the displayClass method to print out the array!

Page 18: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Finding a student’s average

Which student? (Which row?) set a variable Add up all the marks (total)

All the columns (use a loop!) Hint: the inside loop for printing…

Find the average (total / # of marks) Put in proper array spot (Row? Column?) use variables not “1, 4”

Page 19: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #4…

Complete the method that will find the average for a student (to 1 decimal)Place the average in the proper spot in the

array

Make sure you update the main method to use this method!

Page 20: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Finding a test average

Which test? (Which column?) set a variable

Add up all the marks (total) All the rows (use a

loop!) Hint: the outside loop

for printing… Find the average (total /

# of marks) Put in proper array spot

(Row? Column?) use variables not “4, 1”

Page 21: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #5…

Complete the method that will find the average for a test (to 1 decimal)Place the average in the proper spot in the

arrayMake sure that you update the main

method to use this method

Page 22: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #6…

Add a method that will find the class average It may depend on the student averages

being calculated alreadyPlace it in the array

Page 23: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #7…

Improve the initClass method so that the values can be entered in from the keyboardMaybe the entire class doesn’t have to be

entered at one time more realistic!

Page 24: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Do this #8…

Add a method that will allow you to change/update a student’s informationYou maybe should then recalculate the

averages (test, student, class)Add a method to delete a student Add a method to delete a test

Page 25: 2 dimensional arrays Steven Wood ©2005. Arrays dimensions Java allows arrays with many subscripts 2-D examples Chess board Excel spreadsheet

Sources

Text http://www.leepoint.net/notes-java/data/arrays/30arrays.html http://livedocs.macromedia.com/coldfusion/7/htmldocs/images/array2_3.jpg www.cs.brandeis.edu/.../cs11a/arrays/multi.html http://s91589888.onlinehome.us/sgc/g05.gif