我有一个班级持有boolean
,两个doubles
,然后是该班级的array
,我需要boolean
和doubles
来默认值为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);
答案 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对象。