public class runnnn {
static List abc= new ArrayList();
static List def = new ArrayList();
static List ghi = new ArrayList();
public static void main(String[] args) {
Form pForm = null;
Form pForm1 = null;
Form pForm2 = null;
Form pForm3 = null;
Form pForm4 = null;
Form pForm5 = null;
int i;
int mn = 0;;
for(i=0;i<5;i++)
{
pForm = new Form();
String asd = "asdasd"+ i;
pForm.setPhase(asd);
pForm.setCount(i);
abc.add(pForm);
}
for(i=0;i<3;i++)
{
pForm3 = new Form();
String asd = "asdasd"+ i;
pForm.setPhase(asd);
pForm.setCount(i);
def.add(pForm3);
}
for(int j=0;j<abc.size();j++){
pForm1=null;
pForm1=(Form)abc.get(j);
pForm4 = null;
mn=pForm1.getCount();
for(int k=0;k<def.size();k++){
pForm2=null;
pForm2=(Form)def.get(k);
if(pForm1.getPhase() == pForm2.getPhase()){
mn = mn + pForm2.getCount();
}
}
pForm4.setPhase(pForm.getPhase());
pForm4.setCount(mn);
ghi.add(pForm4);
}
for(int j=0;j<ghi.size();j++){
pForm5=null;
pForm5=(Form)ghi.get(j);
System.out.println(pForm5.getPhase()+" "+pForm5.getCount());
}
}
}
这是我得到的错误
pForm4.setPhase(pForm.getPhase());
空指针访问:变量pForm4在此位置只能为空
我正在尝试将一个列表的计数添加到另一个列表,第二个列表是第一个列表的子集
答案 0 :(得分:3)
你从不调用
pForm4 = new Form();
从你的代码:
pForm4 = null;
mn=pForm1.getCount();
for(int k=0;k<def.size();k++){
pForm2=null;
pForm2=(Form)def.get(k);
if(pForm1.getPhase() == pForm2.getPhase()){
mn = mn + pForm2.getCount();
}
}
pForm4.setPhase(pForm.getPhase());
您将pForm4设置为null并尝试调用方法?那不行。