我有这段代码,将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。请记住,可以使用索引n0,...,1来访问大小为n-1的数组。这意味着大小为0的数组不能保存任何数据(但是您可以创建它)。尝试使用某些索引访问innerArray时,例如

innerArray[t] = new String[innerArrayObj.length()];


您将得到一个ArrayIndexOutOfBoundsException

要解决此问题,您必须适当地初始化innerArray的外部尺寸(瞥一眼您的代码,我会说String[][] innerArray = new String[mapatest.length()][];应该这样做)。

09-13 14:18