Java.NullPointerException null(再次)
我在NullPointerException中遇到另一个问题。这次它突出显示了Java.NullPointerException null(再次),java,null,nullpointerexception,Java,Null,Nullpointerexception,我在NullPointerException中遇到另一个问题。这次它突出显示了tellen=telno.length()。无论你问什么: 文本文件中有要读取到该变量的数据 所有变量都已初始化 缓冲读取器也被初始化 以下是我的代码片段: while((telno = br.readLine()) != null){ name = br.readLine(); surname = br.readLine(); company = br.readLine();
tellen=telno.length()
。无论你问什么:
- 文本文件中有要读取到该变量的数据
- 所有变量都已初始化李>
- 缓冲读取器也被初始化
- 以下是我的代码片段:
while((telno = br.readLine()) != null){ name = br.readLine(); surname = br.readLine(); company = br.readLine(); house = br.readLine(); street = br.readLine(); locality = br.readLine(); postcode = br.readLine(); telno = br.readLine(); tellen = telno.length(); mobno = br.readLine(); sep = br.readLine(); if(tellenx > tellen) tellen = tellenx; }
- 名字
- 姓
- 公司
- 房子
- 街头
- 地点
- 电话号码
- 手机号码
George
Farrugia
Some Company
9, Flowers
Quail Street
Bubaqra
BBQ 1569
21369854
79825643
--------------------------------------------
Paul
Zammit
9
Bird Street
St. Julians
STJ 0000
21545796
79745247
--------------------------------------------
Peter
Spiteri
Oak Company
Trees
Birch Street
Oakgrove
TRE 3333
21323323
99323323
--------------------------------------------
Zammit
后面的空格是空格。如果没有数据可以避免这样的问题,则会放置此选项。很可能是文件的结尾,而您的bufferedReader.readLine()
正在返回null,而您只是在一个实例上调用了一个null的方法,这将导致NPE我猜您正在尝试使用readLine()进行读取如果没有null check.Definitel,它将给出NPE。添加一个if语句来检查是否有任何null引用,这是检查代码中错误的一个好方法
伪代码中的一个示例是:
telno = br.readLine();
if(telno == null)
System.out.println("this will cause null pointer exception "+ telno.length());
else
tellen = telno.length();
导致此错误的原因是,您在一个
循环中读取11
行,而只能读取10行
因此,在某个时刻,br.readLine()
将返回null
您需要根据需要读取文件,这意味着一次(while循环)读取10行,然后再读取10行,依此类推
while((telno = br.readLine()) != null){ // first line
name = br.readLine(); // secondline I think this should be first line
surname = br.readLine();
company = br.readLine();
house = br.readLine();
street = br.readLine();
locality = br.readLine();
postcode = br.readLine();
telno = br.readLine();
tellen = telno.length();
mobno = br.readLine();
sep = br.readLine(); // eleventh line
if(tellenx > tellen) tellen = tellenx;
}
为什么重复使用readLine()而不进行null检查?请发布null指针异常的堆栈跟踪。它可能提供了一个线索。你能发布一个输入文件的示例吗。你说所有字段都有数据,看到一个示例就好了。你意识到你做了两次tellno=br.readLine()
,忽略了第一个值,对吗?文本文件中有数据。没有一行是空的。在我添加另一组数据之前,它运行良好。与此相同的字段是程序设计的目的。@markscamilleri在文件末尾,如果没有可读取的内容br.readLine()返回null。尝试过它,当有数据时,它会给我一个NullPointerException。我不知道发生了什么。我想你的意思是说=
,你还需要删除if
和else
后面的行。谢谢你给我解释。有了你的回答,我设法解决了这个问题。再次感谢。当我得到15个代表积分时,我会投票支持你:)不客气。只是一个建议。下次遇到这个问题时,试着自己调试并找到问题。从长远来看,它将帮助你。如果您使用的是Eclipse,那么实际上,我使用的是BlueJ。坦率地说,我仍在学习“O”级/GCSE同等水平的课程,这就是为什么我在这些方面没有经验。