class toStudent{
static student[] a;
public toStudent(){

}
public static  student[] turn(String[][] b) throws IOException,NullPointerException{
a=new student[b.length];
  for(int k=0;k<a.length;k++)
        a[k]=null;
         
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
switch(j){
   case 0:  a[i].setnum(b[i][j]); break;
   case 1:  a[i].setname(b[i][j]); break;
   case 2:  a[i].setage(b[i][j]); break;
   case 3: a[i].setsex(b[i][j]); break;
   case 4: a[i].setjava(b[i][j]); break;
   case 5: a[i].setc(b[i][j]); break;
   case 6: a[i].setenglish(b[i][j]);break;
}
  
  }
}
                    return a;


}
有什么错误啊     运行时出现了那个NullPointerException异常   如果用try{}catch(){}来处理的话 就不能进行转换了 等于说还是出再了这个NullPointerException 异常   希望帮我解决这个问题  其中student 是我自己定义的一个类型   为了将一个String的 二维信息转换成为一个student的信息

解决方案 »

  1.   

    貌似static变量不能动态分配吧????????????
      

  2.   

    a=new student[b.length];
      for(int k=0;k <a.length;k++)
            a[k]=null; // 看这里, 你都把a[k]赋值为null, 即还没有为a[k]创建对象, 然后你下面就直接使用了a[k], 当然是错误的。
       // a = new student[b.length]只是为数组a分配了存储student对象的空间, 但并没有创建student对象(如果你会C++, 这点与C++有区别, C++中此时会为数组中的元素创建对象, 而Java却不会)
             
    for(int i=0;i <b.length;i++){
    for(int j=0;j <b[i].length;j++){
    switch(j){
       case 0:  a[i].setnum(b[i][j]); break;
       case 1:  a[i].setname(b[i][j]); break;
       case 2:  a[i].setage(b[i][j]); break;
       case 3: a[i].setsex(b[i][j]); break;
       case 4: a[i].setjava(b[i][j]); break;
       case 5: a[i].setc(b[i][j]); break;
       case 6: a[i].setenglish(b[i][j]);break;
      

  3.   

    晕啊,没有初始化数组啊,当然是NullPointerException了