我有这个代码,我将2D JSONArray保存到java 2D数组。
JSONArray mapatest = mapObject.getJSONArray("map");
String[][] innerArray = new String[0][];
for(int t = 0; t < mapatest.length(); t++){
JSONArray innerArrayObj = mapatest.getJSONArray(t);
Log.e("TEST: ","PRUEBA");
innerArray[t] = new String[innerArrayObj.length()];
for(int k = 0; k < innerArrayObj.length(); t++){
innerArray[t][k] = innerArrayObj.getString(k);
}
}
mapa.setMapa(innerArray);
但是当我运行应用程序时,它会抛出此异常:
E/AndroidRuntime: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
我不知道问题在哪里,数组已初始化。
答案 0 :(得分:2)
你宣布了
String[][] innerArray = new String[0][];
这意味着innerArray
的外部尺寸为0
。请注意,可以使用索引n
,0
,...,1
访问大小为n-1
的数组。这意味着大小为0
的数组不能保存任何数据(但您可以创建它)。只要您尝试使用某个索引访问innerArray
,例如
innerArray[t] = new String[innerArrayObj.length()];
您将获得ArrayIndexOutOfBoundsException
。
要解决此问题,您必须正确初始化innerArray
的外部维度(通过瞥见您的代码,我会说String[][] innerArray = new String[mapatest.length()][];
应该这样做。)