二维表和NullPointerException

时间:2012-11-06 11:07:34

标签: java

我对这段代码有疑问:

PointerCoords[][]srodki = new PointerCoords[n2][];

for(int i = 0; i < n2; i++)
{
        srodki[i] = new PointerCoords[n2];
}

for(int i = 0; i < n2; i++)
{
        for(int j = 0; j < n2; j++)
        {
                srodki[i][j].y = r + j*k;
                srodki[i][j].x = r + i*k;
        }

}

为什么我会收到NullPointerException?

6 个答案:

答案 0 :(得分:4)

问题是你没有初始化内容 在执行插入之前srodki[i][j]

srodki[i][j].y = r + j*k;
srodki[i][j].x = r + i*k;

首先,你需要执行:

srodki[i][j] = new PointerCoords();

然后就可以了。

答案 1 :(得分:1)

在您的代码中,您不初始化数组中的对象。 最初,除非您明确地初始化它们,否则所有数组元素都是null

for(int i = 0; i < n2; i++)
    {
            for(int j = 0; j < n2; j++)
            {
                    // your constructor goes here
                    srodki[i][j] = new PointerCoords();
                    srodki[i][j].y = r + j*k;
                    srodki[i][j].x = r + i*k;
            }

    }

答案 2 :(得分:1)

因为您没有初始化 引用

答案 3 :(得分:1)

按如下方式初始化数组:

PointerCoords[][] srodki = new PointerCoords[n2][n2];
for (int i = 0; i < n2; i++) {
    srodki[i] = new PointerCoords[n2];
    for (int j = 0; j < n2; j++) {
       srodki[i][j] = new PointerCoords();
    }
}

答案 4 :(得分:0)

初始化数组后,它包含一个n2 * n2的空值矩阵。

为了能够在数组中设置PointerCoords对象的属性,你必须先做

array[i][j] = new PointerCoords();

答案 5 :(得分:0)

正确的做法是避免空指针

PointerCoords[][]srodki = new PointerCoords[n2][];

    for(int i = 0; i < n2; i++)
    {
            srodki[i] = new PointerCoords[n2];
    }

    for(int i = 0; i < n2; i++)
    {
            for(int j = 0; j < n2; j++)
            {
                    srodki[i][j]= new PointerCoords(); // added line
                    srodki[i][j].y = r + j*k;
                    srodki[i][j].x = r + i*k;
            }

    }