2012-03-29 193 views
0

我在下面的代碼中得到了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;  
} 

編譯器被示出在代碼 arr[i]=null空ponter異常。

+1

我認爲沒有理由downvote這個問題。也沒有理由關閉。 – 2012-03-29 10:07:33

回答

3

您尚未創建數組 - 一個數組不會解決無論如何,你的問題,因爲它不能調整大小。我們事先不知道行數。

使用,而不是一個集合:

public static String[] CreateVocab(BufferedReader buffR) throws IOException{ 
    List<String> lines = new ArrayList<String>(); 
    String line = null; 
    while((line = buffR.readLine()) != null){ 
     lines.add(line); 
    } 
    return lines.toArray(new String[]{});  
} 
6

這是原因:

String[] arr = null; 
int i = 0; 
arr[i]= null; // 'arr' is null 

由於行數讀取不明建議使用ArrayList<String>存儲線讀取,使用ArrayList.toArray()返回一個String[](如果返回一個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;  
} 

要返回數組變化return到:

return arr.toArray(new String[]{}); 
+0

我該如何解決它? – thetna 2012-03-29 10:02:17

1
String[] arr = null; //here you are setting arr to null 
int i = 0; 
arr[i]= null;  // here you are trying to reference arr 
相關問題