本人是初学者,经过了几个月的理论学习后刚开始动手做一些自己想出来的小应用程序,使人扫兴的是,我写过的几个程序都出现-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)
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)
解决方案 »
- httpunit如何实现HTTPS的访问
- itext pdf 增加table 不能自动分页
- eclipse +wtp 用ant編譯的時候出現jdk1.4
- 急!! 再次麻烦大家 正则表达式截取字符串
- 怎样实现记事本程序里面的查询功能呢?急~~~~
- ???跪求 jacob 控制word问题 急!!!!
- MySQL的中文问题
- oxfordxyc(石头) 能否给我也发一个java编写一个学籍管理系统,thx
- 求救JavaBuilder 5.0和JavaBuilder 6.0企业版序列号
- 唉...看了好多资料还是不懂。Enum <E extends Enum<E>>。。。
- java图形界面开发,运行的时候很慢,图形开发需要注意哪些细节?
- getLocation()带参数的问题
你把它改成String s = "";
null的话你在if里面访问了它的长度
所以出现了空指针异常
是不是没有初使化呀在下面就用了
ID[i]=temp[j++];
lz试试
我感觉问题可能出在这里
bf为空
ID[i]=temp[j++];
全局变量总不会默认实例吧
呵呵
private String[] ID;
private String[] PW;
private String[] ID = new String[N];
private String[] PW = new String[N];
这样就OK了
private String[] ID;
private String[] PW;
是句柄
所以JVM默认复制为null因此必须自己进行初始化
private String[] PW;
嗯 没注意看这两个
你没有初始化他们
问题确实在那两个数组引用上。我按照下面的形式改了以后问题解决了。
private String[] ID = new String[N];
private String[] PW = new String[N];非常感谢!
ID与PW的确会默认初值,但初值是null,所以不能直接调用[i]运算,
这里还是用List装ID和PW好些