我有这段代码,将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
我不知道问题出在哪里,数组已初始化。
最佳答案
你宣布
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()][];
应该这样做)。