在这段代码中,Null Pointer Exception的原因是什么?

the*_*tna 0 java nullpointerexception

我在以下代码中遇到null-exception throw错误.它可能是什么原因?

 public static String[] CreateVocab(BufferedReader buffR) throws IOException{
    String[] arr = null;
    int i = 0;
    arr[i]= null;
    String line = new String();
    while((line = buffR.readLine()) != null){
        arr[i] = line;
        i=i+1;
    }
    return arr;     
}
Run Code Online (Sandbox Code Playgroud)

编译器在代码中显示Null ponter异常 arr[i]=null.

hmj*_*mjd 6

这是原因:

String[] arr = null;
int i = 0;
arr[i]= null; // 'arr' is null
Run Code Online (Sandbox Code Playgroud)

由于读取的行数未知,建议使用a ArrayList<String>来存储读取的行,并使用ArrayList.toArray()返回a String[](如果返回a ArrayList<String>是不可接受的).

返回的示例List<String>:

public static List<String> CreateVocab(BufferedReader buffR)
    throws IOException
{
    List<String> arr = new ArrayList<String>();
    String line;
    while((line = buffR.readLine()) != null){
        arr.add(line);
    }
    return arr;     
}
Run Code Online (Sandbox Code Playgroud)

要将数组更改返回return到:

return arr.toArray(new String[]{});
Run Code Online (Sandbox Code Playgroud)