本人是初学者,经过了几个月的理论学习后刚开始动手做一些自己想出来的小应用程序,使人扫兴的是,我写过的几个程序都出现-NullPointerException。今天写的一个类还是这个老问题,可以编译,但执行时出现Exception,真让我摸不着头脑。下面是那个类及其测试类,请各位帮我指点到底哪里出了问题,谢谢!import java.io.*;
public class Test{
 public static void main(String[] args){
  Waiter waiter = new Waiter();
  System.out.println(waiter.getID());
  System.out.println(waiter.getPW());
  }
}public class Waiter{
 private String[] ID;
 private String[] PW; private void separate(){
  int j, i=0;
  String s=null;
  try{ 
  BufferedReader bf= new BufferedReader(new FileReader("waiter.txt"));
  while( (s=bf.readLine()) !=null)
   {if(s.length()!=0)  
     {j=0;
      String[] temp=null;
      temp=s.split("/"); 
      ID[i]=temp[j++];
      PW[i]=temp[j];
      i++;
     }
   }
  } catch(IOException ex){ 
    System.err.println("Read Failed!");
    System.exit(1);
    }
 } public String[] getID(){
  separate();
  return ID; 
 } public String[] getPW(){
  separate();
  return PW;
 }
}下面是运行界面:
E:\GOJAVA\SERVICE>java Test
Exception in thread "main" java.lang.NullPointerException
        at Waiter.separate(waiter.java:16)
        at Waiter.getID(waiter.java:28)
        at Test.main(test.java:5)

解决方案 »

  1.   

    我估计是变量s的问题
    你把它改成String s = "";
    null的话你在if里面访问了它的长度
    所以出现了空指针异常
      

  2.   

    private String[] ID
    是不是没有初使化呀在下面就用了
      ID[i]=temp[j++]; 
    lz试试
      

  3.   

    while( (s=bf.readLine()) !=null) 
    我感觉问题可能出在这里
    bf为空
      

  4.   

    谢谢jxsfreedom,我照办了,但是同样的错误信息。请问这个跟环境变量的设置有没有关系?
      

  5.   

    没有实例能赋值吗??
    ID[i]=temp[j++];
    全局变量总不会默认实例吧
    呵呵
      

  6.   

    好明显,这两个的问题。
    private String[] ID;
    private String[] PW; 
      

  7.   


    private String[] ID = new String[N];
    private String[] PW = new String[N]; 
    这样就OK了
      

  8.   

    Waiter 这个类,你的constructor 呢 ?
      

  9.   

    这里的成员变量
    private String[] ID; 
    private String[] PW; 
    是句柄
    所以JVM默认复制为null因此必须自己进行初始化
     
      

  10.   

    private String[] ID; 
    private String[] PW;
    嗯  没注意看这两个
    你没有初始化他们
      

  11.   

    非常感谢大家的热情帮助!!!
    问题确实在那两个数组引用上。我按照下面的形式改了以后问题解决了。
    private String[] ID = new String[N];
    private String[] PW = new String[N];非常感谢!
      

  12.   

    数组也是引用,
    ID与PW的确会默认初值,但初值是null,所以不能直接调用[i]运算,
    这里还是用List装ID和PW好些