BUILDING JAVA PROGRAMS CHAPTER 7.5 MULTIDIMENSIONAL ARRAYS 1 TWO-DIMENSIONAL ARRAY Allow for the creation of table-like data structures with a row and column format. The first subscript is a row index in a table while the second subscript is a column index in a table. Declaration type[][] name = new type [row size][col size] 0 Examples int [][] grid = new int[3][4]; rows 0 1 2 [0][0] [1][0] [2][0] cols 1 2 3 [0][1] [1][1] [2][1] [0][3] [1][3] [2][3] [0][2] [1][2] [2][2] 2 DECLARATIONS int[][]table = new int[3][4]; int[][] table = { {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }; Think of a 2D Array as An Array of Arrays 3 REFERENCING ELEMENTS OF 2D ARRAY The array below is a 3 x 5 array of ints Declaration: Int [][] grid = new int[3][5]; grid[0][0]= 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 grid[2][2]= grid[1][3]= grid[3][0]= 4 REFERENCING ELEMENTS OF 2D ARRAY The array below is a 3 x 5 array of ints Declaration: char [][] grid = new char[3][5]; grid[0][0]= A B C D E V W X Y Z H I J K L grid[2][2]= grid[1][3]= grid[0][5]= 5 REFERENCING ELEMENTS OF 2D ARRAY int[][] grid = new int[3][5]; for (int row = 0; row < 3; row++){ for (int col = 0; col < 5; col++){ grid[row][col] = row + col; } } 6 PASSING TWO-DIMENSIONAL ARRAYS TO METHODS public void printTable (int[][] table){ for (int row = 0; row < table.length; row++){ for (int col = 0; col < table[row].length; col++){ System.out.printf(“%4d”, table[row][col]); } System.out.println(); } } 7 LETS TRY SOME CODE Write a piece of code that constructs a two-dimensional array of integers named table with 5 rows and 10 columns. Fill the array with a multiplication table, so that array element [i][j] contains the value i * j. Use nested for loops to build the array. 8 MULTIPLICATION TABLE int[][] table = new int[5][10];//declaration int[][] table = new int[5][10];//declaration = i0;< itable.length; < 5; i++) { i++) { for for (int (int i = i0; = j0;< jtable[i].length; < 10; j++) { j++) { for for (int (int j = j0; table[i][j] table[i][j] = i =* j;i * j; } } } } 9 MORE CODE MATRIX ADD Write a method named matrixAdd that accepts a pair of two-dimensional arrays of integers as parameters, treats the arrays as 2D matrices and adds them, returning the result. The sum of two matrices A and B is a matrix C where for every row i and column j, Cij = Aij + Bij. You may assume that the arrays passed as parameters have the same dimensions. 10 public static int[][] matrixAdd(int[][]a, int[][]b){ int rows = a.length; int cols = 0; if (rows>0){ cols=a[0].length; } int[][]sum= new int[rows][cols]; //declare sum matrix for(int r=0;r<a.length;r++){ for(int c=0;c<a[r].length;c++){ sum[r][c]=a[r][c] +b[r][c]; } } return sum; } 11 WHAT WE COVERED •Create, populate and traverse multidimensional arrays! 12