You can use nested enhanced for loops to read every element in a two-dimensional array. The outer loop reads each row, and the inner loop reads the values in that row.
In this example, you will print a grid of integers, with each row on a separate line.
Source code
public class TwoDimensionalArrayExample {
void main() {
int[][] numbers = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int[] row : numbers) {
String separator = "";
for (int number : row) {
IO.print(separator + number);
separator = " ";
}
IO.println();
}
}
}
Explanation
The following declaration creates a two-dimensional array:
int[][] numbers = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
In Java, a two-dimensional array is an array whose elements are arrays. Here, numbers contains three rows, and each row contains three integers.
The outer loop reads one row at a time:
for (int[] row : numbers) {
The variable row has the type int[] because each row is an array of integers.
Inside the outer loop, the inner loop reads each number in the current row:
for (int number : row) {
IO.print(separator + number);
separator = " ";
}
IO.print() writes output without starting a new line.
The separator variable starts as an empty string for each row. After printing the first number, it becomes a space. This places spaces between the numbers without adding a trailing space.
After the inner loop finishes, the following statement starts a new line:
IO.println();
The outer loop then moves to the next row.
Run the example
Compile and run the file:
javac TwoDimensionalArrayExample.java
java TwoDimensionalArrayExample
Output
1 2 3
4 5 6
7 8 9
Rows with different lengths
The same loop also works when rows contain different numbers of elements. For example, replace the array declaration with:
int[][] numbers = {
{1, 2},
{3, 4, 5},
{6}
};
The output becomes:
1 2
3 4 5
6
Each inner loop processes the elements in its current row, so the rows do not need to have the same length.
