我知道为什么会出现错误,我已经修复了它。我需要有人来正确解释它。。它编译得很好,但在运行时,它在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
。