我从服务器收到一些数据作为JSON响应。我提取了我需要的数据,我想将这些数据放入字符串数组中。我不知道数据的大小,所以我不能将数组声明为静态。我声明了一个动态字符串数组:
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
将字符串动态插入字符串数组的方法是什么?
答案 0 :(得分: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()]);
答案 1 :(得分: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");
}
答案 2 :(得分:0)
String数组具有定义的大小,声明时应提供该大小,您以后不能通过添加或删除元素来更改它,并且动态数组的纯概念不会在Java中退出。 Read detailed article here...
这是声明固定大小的数组的正确方法。
String[] myString = new String[5];
fruits[0]="hello";
fruits[1]="hello";
fruits[2]="hello";
fruits[3]="hello";
fruits[4]="hello";
相反,您可以使用列表执行类似的任务。该列表纯粹是动态的,您可以在运行时添加多个值。 这是使用JAVA在Android中声明列表的正确方法。
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Value 1");
fruits.add("Value 2");
fruits.add("Value 3");
fruits.add("Value 4");
fruits.add("Value 5");
fruits.add("Value 6");
fruits.add("Value 7");
// add as much values as per requirement
// you can also use loops to add multiple values