该数组仅从中读取,从不写入

时间:2013-10-20 08:38:47

标签: java arrays

早上好, 我在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);

   }
}

我有这个提示“只读取数组,从不写入”

当我运行程序时出现此错误: 线程“main”java.lang.NullPointerException中的异常     在mainTestClass.main(mainTestClass.java:34)。

请帮助

感谢。

3 个答案:

答案 0 :(得分:7)

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

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

当您执行MapPoint[] mapPoints = new MapPoint[10];时,就像这种情况一样: enter image description here

这就是为什么你得到NullPointerException

答案 1 :(得分:2)

创建数组时:

MapPoint[] mapPoints = new MapPoint[100];

你没有创建一个包含100个mappoints的数组。

您正在创建一个数组,该数组有空间可容纳100个地图点参考。

所以你需要自己创建一个MapPoint,并把它放在数组中。

答案 2 :(得分:1)

那是因为你必须先对变量进行初始化。

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