提问人:jinjan 提问时间:8/5/2022 更新时间:8/5/2022 访问量:42
尝试用点填充数组时获取 NullPointerException [duplicate]
Getting a NullPointerException when trying to fill an Array with Points [duplicate]
问:
我创建了一个包含 50 个点的数组,现在我想用 10x5 网格中按 y 坐标排序的点填充这些点。我在 中得到一个 NullPointerException。我在这里做错了什么?if(i<5) P[i].x=0
Point[] P= new Point[50];
for (int i=0; i<P.length; i++) {
if (i<5) P[i].x=0;
else if (i<10) P[i].x=50;
else if (i<15) P[i].x=100;
else if (i<20) P[i].x=150;
else if (i<25) P[i].x=200;
else if (i<30) P[i].x=250;
else if (i<35) P[i].x=300;
else if (i<40) P[i].x=350;
else if (i<45) P[i].x=400;
else P[i].x=450;
if (i%5==0) P[i].y=0;
else if (i%5==1) P[i].y=50;
else if (i%5==2) P[i].y=100;
else if (i%5==3) P[i].y=150;
else P[i].y=200;
}
答:
0赞
Stultuske
8/5/2022
#1
Point[] P= new Point[50];
for (int i=0; i<P.length; i++) {
if (i<5) P[i].x=0;
else if (i<10) P[i].x=50;
else if (i<15) P[i].x=100;
....
Point[] p = new Point[50];
这将创建一个数组,该数组最多可以容纳 Point 类的 50 个实例。但是,您尚未实例化其中任何一个,因此它们都是 null。
if (i<5) P[i].x=0;
else if (i<10) P[i].x=50;
根据值的不同,您在这里尝试将值设置为位于 p[i] 的实例中的变量,但如前所述,该值仍为 null。
您首先需要在数组中添加实际实例。
评论