Java.NullPointerException为null

时间:2013-01-28 16:14:36

标签: java null nullpointerexception

以下是我的代码中的代码段:

class Lines{
int nameMax() throws IOException{
    // initialize variables
    // These will be the largest number of characters in name
    int namelen = 0;

    //These will be the current word lenght.     
    int namelenx = 0;

    ... 

    while(name != null){
        name = br.readLine();
        namelenx = name.length();

    ...

        if(namelenx > namelen) namelen = namelenx;


    }

    float nameleny = namelen/2; //Divides by 2 to find midpoint

    namelen = Math.round(nameleny); //Value is rounded

    return namelen;
}   
}

我正在使用BlueJ,每当我尝试运行它时,它会在标题中给出错误并突出显示namelenx = name.length(); name存在字符串变量,因为它是我剪切的代码的一部分出。请帮助解答。感谢。

4 个答案:

答案 0 :(得分:4)

br.readLine()返回null时,当您在null上调用length()时,它会抛出 NPE 。 你的while循环应该如下所示:

while((name= br.readLine())!=null){
        namelenx = name.length();

现在,即使bufferedReaderreadLine()上返回null,您的时间也会终止。

答案 1 :(得分:1)

可能你想改变

while(name != null)

while((name = br.readline()) != null)

通过这种方式,您检查brnull的读取,并且您可以确定name永远不会null

答案 2 :(得分:0)

name = br.readLine();

可能会返回null。这是你期望的吗?从the doc开始,它返回:

  

包含该行内容的String,不包括任何内容   行终止字符,如果流结束,则为null   达到

所以你可能已经到了输入的末尾。

答案 3 :(得分:0)

这样做的正确方法是:

String name = null;

while((name = br.readLine()) != null) {
    ...
}