2011-06-26 53 views
0

當我從文件創建大型數組時,我得到了一個nullpointerexception。將爲.txt文件的每一行創建一個新元素。當我使用從這個文件創建的數組時,我得到了nullPointerException。從文件-Android創建數組時NullPointerException?

這裏是我的代碼:

static String[] results=new String[172820]; 
      public String[] getWords(){ 
    try{ 
     InputStream fstream = getResources().openRawResource(R.raw.enable1); 

     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 

     for (int x=0; (strLine = br.readLine()) != null; x++) { 
      results[x]=strLine;    
     } 
     in.close(); 
     }catch (Exception e){//Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 
     return results; 
} 
+0

您應該使用調試器的Step Over來定位哪一行代碼會引發此異常。 –

+0

或者在命令提示符下使用'adb logcat'。 – Haphazard

+3

'static String [] results = new String [172820];'@。@不要這樣做。使用ArrayList,您不必擔心超出範圍的異常,或者分配的數量超過您的需要。 – kcoppock

回答

2

起初我要提到,大多數設備具有16MB的最大堆大小,你可能會超過了,但後來我發現this page。看起來512是最大的數組大小。我會嘗試@kcoppock給出的建議,並嘗試一個ArrayList。

作爲一個方面說明:它似乎你正在加載「單詞」到數組中。市場上沒有任何設備的速度足夠快,可以以任何效率遍歷172K物品陣列;我相信你正在爲用戶設置一個緩慢而痛苦的體驗。