Two Laptop Bag*
The moose likes Beginning Java and the fly likes Two Dimensional Array Question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Two Dimensional Array Question" Watch "Two Dimensional Array Question" New topic
Author

Two Dimensional Array Question

Jennifer Schwartz
Ranch Hand

Joined: Jan 12, 2011
Posts: 46

Putting this out there for anyone brave enough to try to nearly draw me a picture, cause I'm just not getting part of this:



Some of the comments are my own..please correct them as needed. I'm not getting the action of the two sets of nested for loops. The way I'm reasoning this is that the "boxes" (from a visual representation) is being counted and thus outputs 0-9 and in an uneven dimension. I understand the lines that initialize the second dimension. I just don't understand *precisely* what the for loops are doing other than incrementing from 0-9. Can someone comment the for loops for me to clarify? Thank you.>
Wouter Oet
Saloon Keeper

Joined: Oct 25, 2008
Posts: 2700

The loops just iterate through the entire array and assign a value to each array element which is incremented each time.


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
Jennifer Schwartz
Ranch Hand

Joined: Jan 12, 2011
Posts: 46

I think I just need to see this visually or something, because I'm not understanding why it's using two sets of nested for loops. Could this example possibly use only 1 nested for loop to get the same result? Everything web site, or video I've watched on 2d arrays use only 1 set of for loops.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11256
    
  16

I think of it this way...

a 1 dimensional array is an egg carton. Eggs are what I care about, but an egg carton holds them, and I can make an egg carton of any size.

a 2 dimensional array is a crate of egg cartons. the crate can hold any number of egg cartons, as long as I make it big enough. Each egg carton can then be a different size. One egg carton in my crate may hold 6 eggs, and the next may hold 12. So, the first loop has me look at each egg carton in the crate. The inner loop looks at each egg in the carton I'm currently looking at. Each time I move to a new egg carton, I need to start over and look at each egg. That's why I need the loop inside the loop.

The analogy can continue to higher dimensions:

A palate of crates of cartons of eggs

A truck full of palates full off crates of cartons of eggs

a fleet of trucks full of trucks full of palates full of crates full of cartons full of eggs...

etc.


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Jennifer Schwartz
Ranch Hand

Joined: Jan 12, 2011
Posts: 46

I like that analogy! It had crossed my mind that the reason for the second set of loops was because of the fact that it's two dim. Thanks for giving me the visual..sometimes it just takes a picture
Eder Suarez
Greenhorn

Joined: Jun 15, 2011
Posts: 13
It's because you have "j" columns and "i" rows. The first iteration tells you the row you are in. The second tells you the column:

The data is filled this way (let's say 2 rows and 3 columns)

1

12

123

123
4

123
45

123
456

You start in "i=0" (first row) and it has to wait until "j"(columns) reaches its limit (3 in this case) so "i" can move to the next row.

So i would put it this way



Hope it helps.
Jennifer Schwartz
Ranch Hand

Joined: Jan 12, 2011
Posts: 46

Thanks for breaking it down. I think I've finally got it.

Now, every time I see an array I'm going to see eggs.

All of the comments were very helpful and I'm sure I'll be posting other questions as they come along.
 
Consider Paul's rocket mass heater.
 
subject: Two Dimensional Array Question