Making a multidimensional array in java
i know that the following way can be used to do a multidimensional array ...
public class Foo
{
int arr[][] = new int [8][8];
public void Test ()
{arr[0][0] = 1;}
}
but i''m running into problems. My problem is the following : i''m doing a private class inside Foo ,that would be like a struct in c++ , and trying to make a multidim array out of it.. but when i compile and try to access the array it says null pointer.. code below
public class Foo
{
private class Foo2
{
public int row = 0;
public int col = 0;
}
public void Test ()
{
Foo2 arr[][] = new Foo2 [8][8];
arr[0][0].row = 1; //<-- Null ??
}
}
but if i do a NON array variable it works just fine... can someone explain what i''m doing wrong here ?
Yep - when you create an array of reference types (i.e. objects), you need to specifically create an object for each element of the array. For instance:
- Nanoprobe
// This is correct as it tells Java to make room for our objectsFoo2 arr[][] = new Foo2 [8][8];// We need to loop through to create a new object for each elementfor ( int i = 0; i < 8; i++ ) { for ( int j = 0; j < 8; j++ ) { arr[i][j] = new Foo2; }}arr[0][0].row = 1;
- Nanoprobe
Yup. Just remind yourself that every non-primitive data type is like a pointer, so when you make a "new Foo2 [8][8]", then you''re really making an 8x8 array of pointers.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement