java - 写入已初始化的二维数组时出现异常

标签 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

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

最佳答案

你声明了

String[][] innerArray = new String[0][];

这意味着 innerArray 的外部尺寸为 0。请记住,可以使用索引 01、...、n-1 访问大小为 n 的数组。这意味着大小为 0 的数组无法容纳任何数据(但您可以创建它)。一旦您尝试使用某些索引访问 innerArray,例如

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

您将收到ArrayIndexOutOfBoundsException

要解决这个问题,您必须正确初始化 innerArray 的外部维度(通过浏览您的代码,我会说String[][] insideArray = new String[mapatest.length ()][]; 应该这样做)。

关于java - 写入已初始化的二维数组时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767454/

相关文章:

java - 获取当前版本号 `tzdata`

android - 如何检查 SQLite 文件一致性(健康检查)

javascript - 如何通过另一个对象数组过滤对象数组

java - Android 谷歌地图标记移动问题

java - setLocation 的 Geofire 错误

android - 如何在安卓应用中使用免费的云数据库?

javascript - 从嵌套的 forEach 循环中的最后一个结果中删除逗号

python - 如何将 Numpy 数组添加到字典中

java - 从 JButton ActionPerformed 调用耗时的方法

Android - 如何在线性布局之间生成线条