Java Split()函数给出Null指针异常错误

lea*_*erX 0 java nullpointerexception

public class url {


 public static void main(String[] args) throws Exception {

    URL imdb = new URL("http://www.omdbapi.com/?t=The%20incredible%20Hulk");

    URLConnection yc = imdb.openConnection();

    BufferedReader in = new BufferedReader(new InputStreamReader(
                                yc.getInputStream()));
    String inputLine;

    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);

    String[] strarr = inputLine.split(",");


    System.out.println("splits.size: " + strarr.length);

    in.close();
}
}
Run Code Online (Sandbox Code Playgroud)

错误是:"线程中的异常"主"java.lang.NullPointerException at imdb.url.main(url.java:25)"

请向我解释如何删除它.我使用分割函数和空指针异常搜索了很多,但是我无法理解我做错了什么.

Boh*_*ian 5

如果从中返回null in.readLine():

 while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine);
Run Code Online (Sandbox Code Playgroud)

然后循环将退出并inputLine保持为null.

从逻辑上讲,inputLine永远为空时结束循环,所以在异常必然!


Oma*_*aha 5

当你的while循环退出时,inputLine为null,因此调用inputLine.split()将始终生成一个NullPointerException.我相信你想要做的是在System.out.println()调用周围放置大括号以及介于两者之间的所有内容,以便它们都包含在循环迭代中:

 while ((inputLine = in.readLine()) != null)
 {
    System.out.println(inputLine);

    String[] strarr = inputLine.split(",");

    System.out.println("splits.size: " + strarr.length);
}
Run Code Online (Sandbox Code Playgroud)

这是否有预期的效果?