2011-08-04 130 views
8

我從服務器接收一些數據作爲JSON響應。我提取我需要的數據,並且我想將這些數據放入一個字符串數組中。我不知道數據的大小,所以我不能將數組聲明爲靜態數組。我宣佈一個動態字符串數組:將字符串動態插入到Android中的字符串數組中

String[] xCoords = {}; 

此後,我在數組中插入數據:

for (int i=0; i<jArray.length(); i++) { 
     JSONObject json_data = jArray.getJSONObject(i); 
     xCoords[i] = json_data.getString("xCoord"); 
    } 

但我收到

java.lang.ArrayIndexOutOfBoundsException 
Caused by: java.lang.ArrayIndexOutOfBoundsException 

什麼是動態插入的字符串的方法成一個字符串數組?

回答

38

使用ArrayList雖然是不是真的需要它,但只是瞭解它

ArrayList<String> stringArrayList = new ArrayList<String>(); 

    for (int i=0; i<jArray.length(); i++) { 
     JSONObject json_data = jArray.getJSONObject(i); 
     stringArrayList.add(json_data.getString("xCoord")); //add to arraylist 
    } 

//if you want your array 
String [] stringArray = stringArrayList.toArray(new String[stringArrayList.size()]); 
+0

我與此嘗試也問題,但如果我只鍵入'字符串[] xCoords = xCoordsList.toArray ();'它給了我一個'類型不匹配:不能從Object []轉換爲String []',所以我把這行代碼改成String [] xCoords =(String [])xCoordsList.toArray();'然後示出了一個 '11月8日至四日:54:24.462:ERROR/AndroidRuntime(1173):java.lang.ClassCastException:致[Ljava.lang.Object;'錯誤。 –

+0

對不起,我編輯的答案..只是添加字符串轉換爲最後statement'(字符串[])' –

+0

這是我的觀點 - 甚至與編輯後的版本的應用程序停止(你必須強制關閉的),也logcat的顯示'java.lang.ClassCastException:;:java.lang.ClassCastException:[Ljava.lang.Object'' 所致[Ljava.lang.Object;' –

6

嘗試這樣

String stringArray[];   
stringArray=new String[jArray.length()]; 
String xCoords[]=new String[jArray.length()];; 

     for (int i=0; i<jArray.length(); i++) { 
      JSONObject json_data = jArray.getJSONObject(i); 
      xCoords[i] = json_data.getString("xCoord"); 
     } 
+0

插入時,此作品,但是當我嘗試從它提取數據'for(int i = 0; i

+0

檢查xCoords [i]的值。打印日誌以查看該值。是否存在長度問題或僅因爲xCoords [i]不是雙值? – Rasel

+0

問題與長度有關 - 如果我將'for {}'的參數更改爲'for(int i = 0; i <10; i ++)',則錯誤將移動到下一行 - double xCoord = Double。 parseDouble(xCoords [I]);' –