在多维数组中为arr[x][y]赋值时出现NullPointerException



我知道为什么会出现错误,我已经修复了它。我需要有人来正确解释它。。它编译得很好,但在运行时,它在appString[i][j]=s[j]行显示Null指针异常。。有人知道原因。。。?

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];
    }
}

您已经创建了顶级数组,但其中的每个元素都为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;
}

类似@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()][]);

以下语句将为一维创建一个应用程序大小的字符串数组

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

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

当在运行时处理appString[i][j]时,将查找第一个appString[i] bucket,并在其中查找appString[i][j]。

这里appString[i]本身就是null,因此得到了NullPointerException

相关内容

  • 没有找到相关文章

最新更新