Java.NullPointerException null(再次)

时间:2013-01-31 18:05:13

标签: java null nullpointerexception

我遇到NullPointerException的另一个问题。这一次突出显示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;
    
    
    }
    

请帮忙。谢谢。 文本文件:

  • 名称
  • 公司
  • 局部性
  • 电话号码
  • 手机号码

问题在于电话(tellen) 所有这些名字都是虚构的,这个程序是一个电话簿

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之后的空白是一个空格。如果没有数据可以避免这样的问题,那就放置了。

4 个答案:

答案 0 :(得分:1)

很可能它是文件的结尾,而你的bufferedReader.readLine()正在返回 null ,你只是在一个null的实例上调用了一个方法,这导致 NPE

答案 1 :(得分:1)

由于您正在一个11中阅读while loop行,而您只需阅读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;


}

答案 2 :(得分:0)

我猜你试图使用readLine()而不使用null check.Definitel,它会给NPE。

答案 3 :(得分:0)

添加if语句以检查是否存在任何空引用是检查代码中是否存在错误的好方法。

伪代码中的一个例子是:

   telno = br.readLine();

   if(telno == null)
       System.out.println("this will cause null pointer exception  "+ telno.length()); 
   else
       tellen = telno.length();