"Hello, my very smartest student!"
"Hello, Rishi!"
"Are you pining for a new discussion about arrays? Well, today we have one for you! Today I'm going to tell you about jagged and multidimensional arrays."
"Sounds bloodthirsty and frightening."
"Don't worry, a real programmer can always handle an array, even when it bares its teeth. Jokes aside, an array's jaggedness reflects the ability not only to swap the rows of a twodimensional array, but also to construct an array however it needs to be.
"Let's say you want the first row of a twodimensional array to have a length of 10, and the second to be 50."
"Can you really do that?"
"Absolutely! First, we create a 'container of containers' — this is the first array, which will store references to arrays of rows. This is how it's done:
int[][] name = new int[height][];
"You simply omit the second dimension, and the Java machine creates a container of containers. This is what will be in memory after executing this code:
"And, well, you already know how to create onedimensional arrays 🙂
This is what the resulting code will look like:

Twodimensional array The zeroth row is an array of 10 elementsThe first row is an array of 50 elements 
"We have just created a socalled "jagged" array. Its edges are rough and irregular.
"And if we now want to display all the elements of this array on the screen, then the array's length
array will come in handy: after all, the lengths of the array's rows are different.
"By the way, can you tell me how to find the length of a 'container of containers' in our example? It is also an array object, which means that it has a length."
"Probably matrix.length
?"
"Quite right! And for the arrays that form the rows, we would use matrix[0].length
for the zeroth row."
"And for the first, that means we would use matrix[1].length
?"
"Quite right. In the first case, the executing the command will yield 10, and in the second case, the result will be 50.
Working with a twodimensional array
"Now let's try to display a twodimensional array:

Create an array Fill the array with values Outer loop that iterates over the rows of the array. Inner loop that iterates over the cells of a single row. 
"As you can see, we need two nested loops. The first we call outer, and the second — inner.
"In the outer loop (the i
variable), we sequentially go through all the rows (arrays) that make up our twodimensional array. Each value of i
corresponds to a row with that index.
"In the inner loop (the j
variable), we iterate over all the cells in the rows. Thanks to the inner loop, a row, which consists of the values of one onedimensional array, will be displayed on the screen.
"This is what will be displayed:
One line of the array is processed  1 2 3 4 5 6 
Two lines of the array are processed  1 2 3 4 5 6 
Three lines of the array are processed  1 2 3 4 5 6 
Multidimensional arrays
"Amigo! Did you guess that if there are twodimensional arrays, then there can also be threedimensional ones?
"I was just thinking about that, but was embarrassed to ask.
"Yes, you can create a threedimensional array, and in general, an array of any dimension. Such arrays are called 'multidimensional'. Just for fun, let's create a multidimensional array that has 4 dimensions.
int[][][][] matrix = new int[2][3][4][5];
"That doesn't seem very difficult!"
"You haven't tried to create one manually yet! Here, feast your eyes on this:
int[][][][] matrix;
matrix = new int[2][][][]; // Create a 2element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
matrix[i] = new int[3][][]; // Create a 3element array of references to references
for (j = 0; j < matrix[i].length; j++)
{
matrix[i][j] = new int[4][]; // Create a 4element array of references
for (k = 0; k < matrix[i][j].length; k++)
matrix[i][j][k] = new int[5]; // Create 5element arrays of integers
}
}
"And that's just creating an array! Then you also need to work with it somehow."
"I take back what I said. It's not so easy to work with them. But it is possible."
"Since it's possible, here's a bonus task. Write code that displays all the values in a threedimensional array. You know enough to do this. The main thing is to be patient and attentive. Or maybe being resourceful (there's a secret bit of knowledge that will help you solve this task in a single line). But no matter how you solve it, solve it."
"Thank you, Rishi. I'll try."
GO TO FULL VERSION