4

早上好,我在 java 中创建了这个类:

public class MapPoint {          
    public MapPoint() {
      this.tag = new String() ;
      this.Id = 0 ;
    }

public long Id;
public double lon;
public double lat;
public String tag; 

}

但是当我想MapPoint在我的主函数中创建一个这样的数组时:

public class mainTestClass {


    public static void main(String[] args){ 
       MapPoint[] mapPoints = new MapPoint[100];
       mapPoints[0].setId(2);
       System.out.println(mapPoints[0].Id);

   }
}

我有这个提示

“数组只被读取,从不被写入”

当我运行我的程序时,我遇到了这个错误:

mainTestClass.main(mainTestClass.java:34) 处的线程“main”java.lang.NullPointerException 中的异常。

请帮忙

谢谢。

4

3 回答 3

9

您刚刚声明了一个最多可以包含 100 个 MapPoint 对象的数组。现在,您需要在数组中创建一个对象。

mapPoints[0] = new MapPoint();
mapPoints[0].setId(2);

当你这样做MapPoint[] mapPoints = new MapPoint[10];时,就像在这种情况下: 在此处输入图像描述

这就是为什么你有一个NullPointerException.

于 2013-10-20T08:39:48.290 回答
2

当您创建一个数组时:

MapPoint[] mapPoints = new MapPoint[100];

您不是在创建一个包含 100 个映射点的数组。

您正在创建一个数组,该数组有空间容纳 100 个对地图点的引用。

所以您需要自己创建一个 MapPoint,并将其放入数组中。

于 2013-10-20T08:41:46.020 回答
1

那是因为您必须先初始化变量。

mapPoints[0] = new MapPoint().setId(2);
于 2013-10-20T08:40:21.680 回答