public Class A{
 public A(){}
 
 public A[] getA(){
   return a;
 }
 
 public void setA(){
   int i = 0;
   try{
     while((i++)<20){
       a[i].j = i;     //这里抛出异常 java.lang.NullPointerException ,为什么?????
       a[i].c = "aa";
     }
   }catch(Exception e){}
 } private A[] a= new A[20];
 public int j;  
 public String c;
}//在B中调用A
Public Class B{
  public static void main(String[] args){
    A a= new A();
    a.setA();
  }  
}

解决方案 »

  1.   

    当然是空指针异常
    private A[] a= new A[20];只是创建了类型为A的数组,
    而每个数组里面是null,你还需对数组的每个内容初始化
    for(int i = 0; i < a.length; i++)
    {
    a[i] = new A();
    }
      

  2.   

    楼上说的对,另外
      while((i++)<20){
           a[i].j = i;     //这里,i可能为20,会产生越界错
           a[i].c = "aa";
    ...
    改成这样就可以了:
       try{
         while((i++)<19){
           a[i] = new A();
           a[i].j = i; 
           a[i].c = "aa";
         }
      

  3.   

    楼上的弄错了,while((i++)<20)这个没问题的,到20就跳出了,只是0到19
      

  4.   

    明白了(i++)<20,是先判i<20,然后i=i+1
    所以会出现越界错
    ------------------------
    我还是没错
    不过,i的初值应为-1,否则只会有1--19,应该是0--19