我班上的数据是空的?

时间:2011-09-21 13:36:36

标签: java class object null

我有一个班级持有boolean,两个doubles,然后是该班级的array,我需要booleandoubles来默认值为false, 0.0, and 0.0,然后我function引用array的一个元素,当我尝试从类中引用一个变量时它抛出一个异常说它为空。这是我的班级和我的职能部门。

    public class PanelData {
        boolean flag = false;
        double tempStart = 0.0;
        double tempEnd = 0.0;
    }

    private PanelData[] panelInfo = new PanelData[115];

private void panelInfoHandler (int i, double timeStart, double timeEnd) throws SQLException
    {
        if (!panelInfo[i].flag) {
            delete();
            insert();
            panelInfo[i].flag = true;
            panelInfo[i].tempStart = timeStart;
            panelInfo[i].tempEnd = timeEnd;
        }
        else if (panelInfo[i].tempStart <= timeStart && panelInfo[i].tempEnd >= timeEnd) {

        }
        else
        {
            insert();
            panelInfo[i].tempStart = timeStart;
            panelInfo[i].tempEnd = timeEnd;
        }
    }

这是我打电话给班级的方式。

panelInfoHandler(9, parsedStart, parsedEnd);

5 个答案:

答案 0 :(得分:6)

new PanelData[115]创建一个115空引用数组。您是否填充了panelInfo对实际对象的引用?

至少,您需要遍历该数组并为数组中的每个元素创建PanelData的新实例,例如。

for (int i = 0; i < panelInfo.length; i++)
  panelInfo[i] = new PanelData();

答案 1 :(得分:2)

在初始化之前,您的数组中包含null个元素。为了澄清,如果创建一个原始对象数组,则会得到一个默认值(即0)值的数组。但是,使用Object元素创建null s数组。

int[] myIntArray = new int[10];  // 10 default values of 0
Integer[] myIntegerArray = new Integer[10];  // 10 null elements

答案 2 :(得分:1)

添加此行,然后分配值:

 if(panelInfo[i] == null) panelInfo[i] = new PanelInfo(); 

答案 3 :(得分:1)

您需要执行类似

的操作
for(int i=0;i<115; i++)
{
   PanelInfo[i] = new PanelData();
}

(或者任何正确的Java语法)

答案 4 :(得分:0)

  public class PanelData {
        boolean flag = false;
        double tempStart;
        double tempEnd;

        public PanelData() {
            flag = false;
            tempStart = 0.0;
            tempEnd = 0.0;    
    }
    private PanelData[] panelInfo = new PanelData[115]; 

    for(int i = 0; i < 115; i++)
       panelInfo[i] = new PanelData();     

创建默认构造函数允许您使用默认值(false,0.0,0.0)实例化变量,这样您就可以测试是否要返回vanilla对象。