尝试用点填充数组时获取 NullPointerException [duplicate]

Getting a NullPointerException when trying to fill an Array with Points [duplicate]

提问人:jinjan 提问时间:8/5/2022 更新时间:8/5/2022 访问量:42

问:

我创建了一个包含 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;
                }
java 数组 for-loop nullpointer异常

评论

1赞 8/5/2022
这回答了你的问题吗?创建对象数组时出现 NullPointerException

答:

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。

您首先需要在数组中添加实际实例。