2011-08-04 101 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]);' –