-2

我是 Java 新手,我正在实现一个包含嵌套类 (CenterData) 的类 (CenterTable)。在封闭类中,我想创建一个 CenterData 类型的数组。代码如下:

public class CenterTable {

public class CenterData {
        public int userId; 
        public double distance; 
        public double elevation; 
        public int point_00; 
        public int point_01; 
        public int point_10; 
        public int point_11; 

        public CenterData() {       
            userId = 0; 
            distance = 0; 
            elevation = 0; 
            point_00 = 0; 
            point_01 = 0; 
            point_10 = 0; 
            point_11 = 0; 
        }
    }   // end of CenterData class

public static CenterData[] centers = new CenterData[7064];  
public static double centerMaxDistance = 0; 
}

每当我尝试访问或设置数组中心的元素时:

 CenterTable.centers[1].beam_user = 1; 
 System.out.println(CenterTable.centers[1].beam_user); 

我收到一个错误:线程“主”java.lang.NullPointerException 中的异常

如果我将类CenterData移出CenterTable并移入它自己的 java 类,我不会遇到这样的问题。我有点卡在这一点上,如果有人有任何提示/提示会很棒。

先谢谢了!

4

3 回答 3

2

您正在获取,NullPointerException因为您正在尝试访问beam_usercenter[1]但它指的是null截至目前。

  • 创建数组时,所有值都是默认值。
  • 引用类型的默认值为null

你需要先创建对象

CentreTable.centers[1] = new CentreData();

为了创建所有对象,

for(int i = 0; i<= centers.length ; i++){

    centers[i] = new CenterData();
}

在您的数组元素引用实际对象后,您可以执行以下操作

centers[1].beam_user = 1;    
于 2013-08-08T19:51:53.603 回答
1

您已经创建了一个对象数组CenterData,但这只是一堆您可以随后将CenterDatas 填充到其中的槽。您必须实际创建它们,一次全部(使用for循环)或根据需要(通过检查是否centers[i] == null并在必要时创建一个新的)。

于 2013-08-08T19:54:38.857 回答
0
public static CenterData[] centers = new CenterData[7064];  

所有元素都为空。您必须将CenterData实例放入数组中。

于 2013-08-08T19:54:25.990 回答