Arrays: Higher Dimensional Arrays CS0007: Introduction to Computer Programming Review If the == operator has two array variable operands, what is being compared? The reference variables held in the variables. How do you compare two arrays to see if they hold the same elements? Iterate through the arrays and compare them element by element. How are the sum and average array algorithms similar? Both iterate through the array and add each element to an accumulator variable. How are the minimum and maximum element algorithms similar? The current minimum or maximum element is compared to each element, if an element is smaller (minimum case) or larger (maximum case) than the current minimum or maximum, the element replaces it. If you intend to use a partially filled array, what information must be kept in addition to the array itself? The current number of elements in the array How does the Sequential Search Algorithm work? Look at every element in the array starting at the first element and check if it is the target value. Two Dimensional Arrays Imagine now we want to keep 10 test scores for 30 students. How would we represent this in a program with what we’ve learned? Answer: You would need either 30 10-element arrays or 10 30-element arrays. This was the problem arrays were supposed to solve! What we have been working with so far are considered one dimensional arrays, because they only extend along one dimension (one set of data). Java also allows for higher dimensional arrays, for example, two dimensional arrays. Two dimensional arrays can be though of having a table of rows and columns in memory. So, a better solution to the above question is what? Answer: Have a 30 x 10 or a 10 x 30 two dimensional array! Two Dimensional Array Example New Topics: Two Dimensional Arrays Two Dimensional Arrays Declaring a two dimensional array is very similar to declaring a one dimensional array. For example, to declare an integer array variable with 3 rows and 4 columns called numbers you would: int[][] numbers = new int[3][4]; The two sets of brackets on the left side of the assignment operator indicates the variable is a reference variable to a two dimensional array. The [3] on the right side indicates the array object will have 3 rows. The [4] on the right side indicates the array object will have 4 columns. Each array element has two indices, one indicating the row and one the column. For example, to access the element in the first row and third column of the above declared numbers array you would: numbers[0][2] Two Dimensional Arrays To initialize a two dimensional array you encapsulate each row in curly brackets, separating elements by commas. You separate each row by commas and put the entire array in curly brackets: int[][] numbers = {{1,2,3}, {4,5,6}, {7,8,9}}; or… int[][] numbers = {{1,2,3}, {4,5,6}, {7,8,9}}; Another way to think of two dimensional arrays is that a two dimensional is a one dimensional array of one dimensional arrays. Said another way, it is a reference variable to an array that holds reference variables to arrays. This is apparent when using the length data member in two dimensional arrays: int[][] numbers = new int[3][4]; numbers.length – the number of rows numbers[0].length – the number of columns in the first row Example: TwoDimLengths.java Class Programming Practice: ClassScores.java Create a program where a user can enter 3 students scores on 3 quizzes. Then, the program should tell the user the average for each student, each quiz, and overall class average for all quizzes. Ragged Arrays Since the rows of a two dimensional array are arrays themselves, they can have different lengths: When the rows of a two dimensional array are of different lengths, the array is known as a ragged array. int[][] ragged = new int[4][]; ragged[0] = new int[3]; ragged[1] = new int[4]; ragged[2] = new int[5]; ragged[3] = new int[6]; Example: RaggedArray.java Higher Dimensional Arrays Java does not impose a limit on how many dimensions an array can be. For instance we can create a three dimensional array: int[][][] numbers = new int[2][3][4]; You can have higher dimensional arrays by simply defining the size of the dimension. You can also have ragged arrays of higher dimensions. For instance you can have a three dimensional array with 3 two- dimensional arrays of sizes 3x3, 4x5, and 2x6.