回 帖 发 新 帖 刷新版面

主题:请高手指教

import    java.io.*;   
   import    java.util.*; 
 

  class    p   
   {  public    int    id;   
      public    String    name;   
      public    int    age;   
      public    String    sex;
   }   
   
  public class kkk
  {
     public    static    void    main(String[]    args) 
    {
         p[] g=new p[1000];
        try
        {
           File file=new File("dd.txt");
           BufferedReader    in=new    BufferedReader(new  FileReader(file));   
           String  s;
           int  i=1;  
             while((s=in.readLine())!=null)   
            { 
               StringTokenizer t=new StringTokenizer(s,",");
               g[i].id=Integer.parseInt(t.nextToken());
               g[i].name=t.nextToken();
               g[i].age=Integer.parseInt(t.nextToken());
               g[i].sex=t.nextToken();
               i++;  
               System.out.println(g[i]);
            }   
         in.close();    
        
        }  catch   (Exception   e)   {   e.printStackTrace();    }
   
    }   
  
  } 

编译能行,可已运行就出错,提示java.lang.NullPointerException,这是怎么回事啊,请教

回复列表 (共2个回复)

沙发

p[] g=new p[1000];在Java中,这条语句只能创建数组的空间,不能递归的创建p的对象。所以现在p的对象都是null的,你在下面引用p.id,就会引发NullPointerException。所以应该这样创建:
p[] g=new p[1000];
for(int i=0; i<g.length; i++){
  g[i]=new p();
}
另外,Java规范要求类名首字母大写,所以应该写成P。这虽然不是语法错误,但是规范的写法。

板凳


谢谢了,太有帮助了[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册