www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Rectangular Array Initialization

reply "John C" <johnch_atms hotmail.com> writes:
I've searched the archive and couldn't see a working solution for how to 
initialize a rectangular/multi-dimensional array. I get an ArrayBoundsError 
when attempting to access it.

Here's my code:

    float[][] matrix = new float[][5];
    for (int i = 0; i < 5; i++) {
        matrix[i].length = 5;
    }
    matrix[0][0] = 1f;
    matrix[1][1] = 1f; // ArrayBoundsError here

However, if I change my code as follow, it works.

    matrix[0][0] = 1f;
    matrix[1].length = 5;
    matrix[1][1] = 1f;

Haven't I already set the length of the array in my for loop earlier? What's 
going on?

Thanks. 
Oct 01 2005
parent "John C" <johnch_atms hotmail.com> writes:
"John C" <johnch_atms hotmail.com> wrote in message 
news:dhlsu7$652$1 digitaldaemon.com...
 I've searched the archive and couldn't see a working solution for how to 
 initialize a rectangular/multi-dimensional array. I get an 
 ArrayBoundsError when attempting to access it.

 Here's my code:

    float[][] matrix = new float[][5];
    for (int i = 0; i < 5; i++) {
        matrix[i].length = 5;
    }
    matrix[0][0] = 1f;
    matrix[1][1] = 1f; // ArrayBoundsError here

 However, if I change my code as follow, it works.

    matrix[0][0] = 1f;
    matrix[1].length = 5;
    matrix[1][1] = 1f;

 Haven't I already set the length of the array in my for loop earlier? 
 What's going on?

 Thanks.
Ok, ignore this. It was a typo in my code.
Oct 01 2005