This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes multi dimension array Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "multi dimension array" Watch "multi dimension array" New topic
Author

multi dimension array

choubix alex
Greenhorn

Joined: Dec 25, 2009
Posts: 22
hello,

I am just getting started with Java and it's good fun.

I'd need to know a couple of things.
I hope someone here will be able to shed some light on the following questions for me


First: is it possible to have a multi dimension array using different types of variables?
let's say the first dimension would be int, the 2nd dimension would be a string...



2nd: in the code (see below) I am using a 2 dimensions array and I store some values into it like this:
multiDollar[i][0] = dollarEarned[i];
multiDollar[0][i] = dollarEarned2[i];

is it possible to do this using a single line?


3rd: apparently there is a problem in my loop as the out.println return only 2000

Really sorry if these questions are trivial but I have just started sinking my teeth in Java...
Thanks!

4th: in Eclipse is it possible like in Excel VBA to define 2 points in the code, execute the code and when the program reaches point 1 stops, you can then execute the rest manually and check the values in the variables. (I found the "watch" feature really useful in VBA to debug a few problems in my loops)


and now the code: (it doesnt do anything special, it is just for me to get up to speed with variables, classes, loops... in java)


import static java.lang.System.out;



Thanks!!


Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19685
    
  20

choubix alex wrote:First: is it possible to have a multi dimension array using different types of variables?
let's say the first dimension would be int, the 2nd dimension would be a string...

There is no such thing as a multi dimension array in Java. All there is are arrays of arrays of X (where X can be anything). Indexes are always ints, starting at 0. You may want a String[][] - an array of arrays of Strings. The outer array contains (references to) String[] objects. Each of these String[] objects contain (references to) String objects.

2nd: in the code (see below) I am using a 2 dimensions array and I store some values into it like this:
multiDollar[i][0] = dollarEarned[i];
multiDollar[0][i] = dollarEarned2[i];

is it possible to do this using a single line?

You can remove the enter and spaces after the first ; but it will still be two separate statements.

3rd: apparently there is a problem in my loop as the out.println return only 2000

Apart from multiDollar[0][0], you do not give multiDollar[i][i] any value. What you are actually doing with multiDollar is create this array:
That's because you only assign values to the sides; with either the row number 0 or the column number 0. As for row 0 and column 0, you first give it value dollarEarned[0] but then overwrite it with dollarEarned2[0] - which is 2000. What is it you actually want to do?


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
choubix alex
Greenhorn

Joined: Dec 25, 2009
Posts: 22
Hi Rob,
thanks for your detailed explanations!

I'd just to make sure I fully understand point 1 and 4.

point 1:
There is no multi dimension array but just arrays of arrays,
My arrays of arrays have to be of a single type (either int[][], String[][]...) ?

Am I right in saying that, if this is the case, I have to "cast" a String into another type of variable when using it later? (let's say I create an array of arrays were String[] is a String and the 2nd level ([][]) is actually an integer that I store in my array as a String. later I'd have to convert the string back into an integers again)

point 4:

actually I am trying to print this on screen:

Dollar earned : 1002000
Dollar earned : 2004000
Dollar earned : 3505500

where :
1002000 would be multiDollar(0,0)
2004000 : multidollar(1,1)
3505500: multidollar(2,2)

It seems that my loop is not very clear as you didnt understand what I was trying to do.
(not your fault at all, it's definitely mine!!)

later I'll want to write:

dollar earned: 2100
dollar earned: 4200
dollar earned: 5850

using the array of arrays.

As I said: this code doesnt "make sense". it is just a way for me to get used to Java and its conventions and basic features

I'll give another shot at my code tomorrow morning in the office. maybe it will be crystal clear after a good night of sleep! ;)

good night!!





Vishal Chaudhry
Greenhorn

Joined: Dec 16, 2009
Posts: 7
If you would like to store different datatypes in a single array. Use the array of type Object. This was you can store object references and can also store primitives like int, float, long, double, etc. as objects using their corresponding wrapper classes Integer, Float, etc.
choubix alex
Greenhorn

Joined: Dec 25, 2009
Posts: 22
I think I have partially cornered the problem: I was a bit blur on how to use a 2D array properly in java.

for instance:

int[][] multiDollar = new int[1][dollarEarned2.length];

would mean that multiDollar has 2 rows and 3 columns (because dollarEarned2.length = 3).
and each row represents an array and each column represents the position within the array.


Still I have a problem understanding how to store correctly dollarEarned[] and DollarEarned2[] in multiDollar[][]
I've been trying using 2 "for" loops but with no success.

basically I am trying to get this (using loops to store):

multiDollar[0][0] = 100
multiDollar[0][1] = 200
multiDollar[0][2] = 350
multiDollar[1][0] = 2000
multiDollar[1][1] = 4000
multiDollar[1][2] = 5500


have someone a chunk of code lying around that would show how to store 2 arrays in a 2D array using doulbe nested loops please?
thanks!


Garrett Rowe
Ranch Hand

Joined: Jan 17, 2006
Posts: 1296
for instance:

int[][] multiDollar = new int[1][dollarEarned2.length];

would mean that multiDollar has 2 rows and 3 columns (because dollarEarned2.length = 3).


Actually it would have 1 'row' and three 'columns'.

Although as Rob said, it is actually declaring an array of one element, that element is an int[] that holds 3 elements.

To iterate through an arbitrary 2D array using nested `for` loops, you would do something like this:



Alternatively, if you really don't need to keep track of the indexes you could use nested foreach (enhanced for) loops


Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11257
    
  16

a one-dimensional array can only hold one type of thing - Integers, Strings, Widgets...whatever. using polymorphism, you can declare your array to hold the super-class, and put in an appropriate sub-class. so you could declare a one-dimensional array of "Animals", then stick in Dogs, Cats, and Birds, but not Trees. When you pull them out, you have to be careful you don't try and call the fly() method on your Dogs, but that can be dealt with.

When you have a "two dimensional" array, i.e. "Widgets[][]", you really have an array that holds references to Widget arrays. The ONLY thing you can put in here is an array of Widgets. Again, using polymorphisim, if Foos are Widets, and Bars are Widgets, you could put an array of either into your Widget array.

A 3-d Widget array is an array that holds references to (Arrays that hold references to (Widget arrays)).

so it doesn't makes sense to say "one dimension holding Integers and the other holding Strings".


There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
 
Consider Paul's rocket mass heater.
 
subject: multi dimension array