在多维数组中分配给arr [x] [y]时出现NullPointerException

时间:2011-07-05 12:50:40

标签: java arrays matrix multidimensional-array nullpointerexception

我知道为什么会出现错误并且我已修复它..我需要有人正确解释..它编译得很好但是在runTime它显示行 appString [i] [j] =的空指针异常s [j]; ..有人知道原因......?

appString = new String[app.size()][];
for(int i = 0; i<app.size();i++)
{
    Vector appVec = (Vector) app.get(i);
    String[] s = new String[appVec.size()];
    appVec.toArray(s);
    for(int j = 0 ; j<s.length;j++)
    {
        //String s1 = s[j];
        appString[i][j] = s[j];
    }
}

3 个答案:

答案 0 :(得分:7)

您已创建顶级数组,但其中的每个元素都为null。你需要这样的东西:

appString[i] = new String[s.length];
循环中的

。或者假设您无需再次使用数组,则无需循环:

appString = new String[app.size()][];
for(int i = 0; i<app.size();i++)
{
    Vector appVec = (Vector) app.get(i);
    String[] s = new String[appVec.size()];
    appVec.toArray(s);
    appString[i] = s;
}

答案 1 :(得分:1)

喜欢@ Jon的解决方案,但有点短。

Vector<Vector<String>> app = ...
List<String[]> arrays = new ArrayList<String[]>();
for(Vector<String> vector: app) 
   arrays.add(vector.toArray(new String[vector.size()]));
appString = arrays.toArray(new String[arrays.size()][]);

答案 2 :(得分:0)

以下语句将创建一个大小为app的第一维

的String数组
appString = new String[app.size()][];

但是该二维数组的所有值都将填充为null。

在运行时处理appString[i][j]时,将查找第一个appString[i]存储桶,并查看appString [i] [j]。

此处appString[i]本身为null,因此您获得了NullPointerException