我对这段代码有疑问:
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?
答案 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;
}
}