Traversing 2D Arrays
Traditional For Loop
assignment 1
When traversing a 2D array a nested loop is required. The first or outside For loop will traverse the rows and the second or inside For loop will traverse the columns.
We say “for every row, for every column of every row, do something.”
Enhanced For Loop (for-each Loop)
2D Arrays can also be traversed using the enhanced for loop (or for-each loop). In this traversal, the data type in the first loop is a 1D array of the same type as the 2D array, and the second loop is of the same type as the elements in the 2D array, double for this example.
This can only be used to access this 2D array, arr2. The enhanced loop cannot change the array that it is traversing.
2D array processing is no more difficult than 1D array processing. Getting a handle on the syntax of the nested loops is the key. One of the four free-response questions on the AP exam will be writing code to process a 2D array. So start practicing writing programs using 2D arrays!
Try It Out!
Using the TwoDArray program in the right panel, complete the following tasks. Add the code where indicated in the starter program.
- Write code to print the box 2D array in the following format:
1 2 3
4 5 6
7 8 9 - Write code to print the box 2D array using row-major ordering. Add the code where indicated in the starter program.
1 2 3 4 5 6 7 8 9 - Write code to print the box 2D array using column-major ordering. Add the code where indicated in the starter program.
1 4 7 2 5 8 3 6 9 - Write code to print the arr2 2D array printing the row and column value as well as the element. Make sure to put the code below where the arr2 2D array is declared.
loc 0, 0: 1.1
loc 0, 1: 2.2
loc 0, 2: 3.3
etc. - Write code to print the arr2 2D array using a for-each loop:
1.1 2.2 3.3
4.4 5.5 6.6
Whenever you want to compile, run and test your program, click the Compile and Run button below. The output will display in the terminal panel.
COMPILE AND RUN
TwoDArray.java
public class TwoDArray
{
public static void main(String[] args)
{
// 2D Array Creation
int[][] box = {{1,2,3}, {4,5,6}, {7,8,9}};
//add the code for #1 below
// Row Major Ordering
//add the code for #2 below
// Col Major Ordering
//add the code for #3 below
// Array of Arrays
double[] row1 = {1.1, 2.2, 3.3};
double[] row2 = {4.4, 5.5, 6.6};
double[][] arr2 = {row1, row2};
//add the code for #4 below
//add the code for #5 below
}
}
2nd assignment
1.In the space below, create 3 different 2D arrays of primitive data types of different sizes. Use an initializer list for one of your arrays.
2.Read the following code segment. What will be printed as a result of running the code?
String[][] arr = new String[2][2];
arr[0][0] = "1";
arr[0][1] = "please";
arr[1][0] = "2";
System.out.println(arr[0][0] + " " + arr[0][1]);
System.out.println(arr[1][0] + " " + arr[1][1]);
Write the output of the code segment below.
3. Fill in the blanks.
For an array that is created with this code:
double[][] arr = new double[i][j];
and is ordered in row-major ordering, the array will have ____ rows and ______
columns.
4. In the space below, write the code to create 2 different 1D arrays. Then create a 2D array using these two arrays.
5. Read through the following code segment. If the code segment has no errors, write what the output of the code segment would be in the space below. If the code segment has errors, describe what changes should be made to correct those errors.
double[][] arr = new double[3][5];
for(int r = 0; r < 5; r++)
{
for(int c = 0; c < 3; c++)
{
System.out.println(r + ", " + c + ": " + arr[r][c]);
}
}
assignment 3
Analyzing Radioactivity in a Grid
A team of researchers has approached you to help them analyze the data that they collected as quickly as possible. They took several measurements of radioactivity (measured in rem) and wrote down the measurements and where they were taken on a grid. They are trying to narrow down the exact location of where the radioactivity is coming from so that they can warn people to avoid these areas. They are still unsure why this area is showing high levels of radioactivity and need your help to solve this environmental crisis.
Pair Programming
In the right panel is the Radioactivity starter code.
You and your partner have been tasked with the following problems. You are required to use the for-each loop for at least one of the three problems listed below.
- Write the code to print out the grid with all the values shown and with appropriate spacing. Make sure it is formatted for easy readability.
- Write the code to identify the largest measurement of radioactivity. Print out the row and column in the following format:”The max radiation is found at coordinates: [row], [col]”
- Write the code to identify all areas that have a measurement of 50rem or higher. Any exposure to these high levels at once can be lethal without medical treatment. Print out the information in the following format:”Location [row], [col] has more than 50rem.”
When you are ready to compile, run and test your program, click the Compile and Run button to run the program. The output will display in the terminal panel.
COMPILE AND RUN
To clear the terminal panel, type “clear” and press Enter in the terminal window.
Radioactivity.java
public class Radioactivity
{
public static void main(String[] args)
{
double[][] grid = {{45, 36, 17, 35, 4, 38},{25,32,60,43,60,1},
{50,4,65,42,2,26},{36,24,3,43,41,11}};
//add your code below
}
}