programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
• Campbell Ritchie
• Jeanne Boyarsky
• Ron McLeod
• Paul Clapham
• Liutauras Vilda
Sheriffs:
• paul wheaton
• Rob Spoor
• Devaka Cooray
Saloon Keepers:
• Stephan van Hulst
• Tim Holloway
• Carey Brown
• Frits Walraven
• Tim Moores
Bartenders:
• Mikalai Zaikin

# HELP!! Multidimensional Array Migraine

Greenhorn
Posts: 2
• Number of slices to send:
Optional 'thank-you' note:
In K&B's book, there's a test question (#11, first self test) that has a couple of loops that create and populate a multidimentional array. The problem is--I don't understand what the "length" is of a multidimensional array.

Second, I've compiled and run the question and can't match their answer. Can anyone recommend a really good source on multidimensional arrays? Every book I have stops at grids.

Bartender
Posts: 1844
• Number of slices to send:
Optional 'thank-you' note:
Allow me a bit of long-windedness in answering your question. I'm long-winded anyway
Think of a multi-dimensional array as a bunch of boxes of different sizes. Here's a 3-D array example:

Let's put 12 big boxes in a line on the floor.
In the first box, let's put 9 medium boxes.
In the second box, let's put 2 medium boxes.
In the third box, let's put 16 medium boxes.

Let's place nothing in any of the other big boxes.

In the first medium box in the first bog box, let's put 128 small boxes.
In the second medium box in the third big box, let's put 14 small boxes.

Let's place nothing in any of the other medium boxes.

Now, let's place figurines of circus animals in the first 76 small boxes in the first medium box of the first big box.
Finally, place figurines of circus animals in all 14 small boxes in the second medium box in the third big box.

Quite a mental image, isn't it? Let's simplify a little bit by translating to Java Code:

What did we lean about multi-dimensional arrays from this? Take a look at lines 12-14. (In Java) A 3-dimensional array is nothing more than a 1-dimensional array that contains 2-dimensional arrays. So, in this example, the length of our 3-Dimensional array is 12, becuase it is a 1-Dimensional array that can contain 12 2-dimensional arrays. Likewise, the length of the 2-dimensional array that is the first sub-array (a3DArray[0]) is 9, because is is a 1-dimensional array that can contain 9 1-dimensional arrays.

Finally, note that a3DArray[10] is null. We didn't put any medium boxes in there, so there's nothing there. Also note that we can't put any figurines or small boxes in the big box; the compiler prevents us. Only medium boxes (2-D arrays) can go in the big box.

So, in Summary:

Ranch Hand
Posts: 3061
• Number of slices to send:
Optional 'thank-you' note:
As Joel so aptly illustrates, a multi-dimensional array is just an array of arrays of arrays of arrays of arrays.... To make it simple, let's just use a 2D array (i.e. an array of arrays):

Using this example array, a.length is the number of 1D arrays there are in the 2D array. You can think of this as the number of rows. Then if you do a[i].length, you will get the number of elements in "row" i. Typically, each row has the same number of elements, but as Joel described, you don't have to do this. For now, I suggest that you keep things simple and use "rectangular" multi-dimensional arrays. When you have mastered that then you can move on to arrays where the each "row" has a different length.

Keep Coding!

Layne

Jonathan Kindred
Greenhorn
Posts: 2
• Number of slices to send:
Optional 'thank-you' note:
Joel-
That was a dam fine explanation--I mean really great. Thanks.

 Forget Steve. Look at this tiny ad: a bit of art, as a gift, that will fit in a stocking https://gardener-gift.com