写入初始化的2D数组时出现异常

时间:2015-11-17 21:35:23

标签: java android arrays json

我有这个代码,我将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

我不知道问题在哪里,数组已初始化。

1 个答案:

答案 0 :(得分:2)

你宣布了

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()][];应该这样做。)