我有这段代码,我将 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
。请记住,可以使用索引 0
、1
、...、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/