2D array questions test whether students can separate row logic from column logic. The syntax is not the hard part. The hard part is knowing what each nested loop visits.
Scenario: classroom seating grid
A grid stores whether each seat is occupied. The method counts occupied seats in each row.
public static int[] rowCounts(boolean[][] seats)
{
int[] counts = new int[seats.length];
for (int r = 0; r < seats.length; r++)
{
for (int c = 0; c < seats[r].length; c++)
{
if (seats[r][c])
{
counts[r]++;
}
}
}
return counts;
}
Why seats[r].length matters
Some 2D arrays can be ragged, meaning rows have different lengths. Using seats[0].length for every row can fail if another row is shorter.
Neighbor checks
For grid problems, students often need to check up, down, left, and right. Every neighbor check needs a boundary test before indexing.
if (r + 1 < grid.length && grid[r + 1][c] == target)
{
count++;
}
Practice prompt
Write a method that counts how many cells in a grid are greater than their left neighbor. Decide what should happen in column 0 before writing code.
