请看以下代码:
class zdqk{
public String lm;
public int lk;
}public class tp{
private zdqk z1;
public zdqk[] arry; public void setDate(){
z1=new zdqk();
z1.lm="lm";
z1.lk=9;
zdqk arry[] =new zdqk[2];
arry[0]=new zdqk();
arry[0].lm="arry09999999999999";
arry[0].lk=9;
arry[1]=z1;
arry[0].lm="arry[1].lm";
System.out.println("in setDate() z1.im is "+z1.lm);
System.out.println("in setDate() arry[0].im is "+arry[0].lm);
}
public void pr(){
System.out.println("in pr() z1.im is "+z1.lm);
System.out.println("in pr() arry[0].im is "+arry[0].lm);
}
public  static void main(String[] arcs){
tp tp=new tp();
tp.setDate();
tp.pr();
}
}这里我用一个对象和一个对象数组来作比,结果对象打可以被识别而对象数组的内容走出对其赋值的方法setDate()后就不能被识别了(指针错),输出如下in setDate() z1.im is lm
in setDate() arry[0].im is arry[1].lm
in pr() z1.im is lm
Exception in thread "main" java.lang.NullPointerException
at tp.pr(tp.java:25)
at tp.main(tp.java:30)
请问怎么会这样?我如何能在pr()中找到arry[]的数据

解决方案 »

  1.   

    zdqk arry[] =new zdqk[2];这句错了
    你这是又定义了一个局部变量
    应该写成
    arry=new zdqk[2];
      

  2.   

    public zdqk[] arry;
    zdqk arry[] =new zdqk[2];这是两个变量了!!!
      

  3.   

    帮你改了一下。class zdqk{
    public String lm;
    public int lk;
    }public class tp{
    private zdqk z1;
    public zdqk[] arry =new zdqk[2]; public void setDate(){
    z1=new zdqk();
    z1.lm="lm";
    z1.lk=9;

    arry[0]=new zdqk();
    arry[0].lm="arry09999999999999";
    arry[0].lk=9;
    arry[1]=z1;
    arry[0].lm="arry[1].lm";
    System.out.println("in setDate() z1.im is "+z1.lm);
    System.out.println("in setDate() arry[0].im is "+arry[0].lm);
    }
    public void pr(){
    System.out.println("in pr() z1.im is "+z1.lm);
    System.out.println("in pr() arry[0].im is "+arry[0].lm);
    }
    public  static void main(String[] arcs){
    tp tp=new tp();
    tp.setDate();
    tp.pr();
    }
    }