我希望能够创建这样的东西:
int points = 250;
public class point {
float x, y;
}
point[] p = new point[points];
// constructor
public JavaMain() {
Random r = new Random();
for (int i = 0; i < points; i++) {
int tx = r.nextInt(640) + 1;
int ty = r.nextInt(480) + 1;
p[i].x = (float)tx;
p[i].y = (float)ty;
}
}
问题是,在尝试将值分配给NullPointerException
或p[i].x
p[i].y
这是我在Java上的第一天,并通过Google和StackOverflow进行了一些研究,但没有发现任何可以解决问题的核心问题。
答案 0 :(得分:8)
您获得的NullPointerException
例外由此行引起:
p[i].x = (float)tx;
您尝试访问存储在位置x
的{{1}}数组内的对象的p
属性,但此元素(或此数组中的任何其他元素)尚未已设置并等于null。
要解决此问题,请在上述行上方添加此行:
i
答案 1 :(得分:1)
问题在于,在初始化数组时,您没有初始化数组的元素。
在这一行你有
point[] p = new point[points];
现在,p被初始化为长度为points
但是,您可以想象在此数组中,单个点对象未初始化(因此全部为null)。因此,当您调用p[i].x = (float)tx;
时,您在p [i]处取消引用点对象,但p [i]未初始化,因此您将取消引用空指针。
你做的相当于
point p;
p.x = 5;