我知道为什么会出现错误并且我已修复它..我需要有人正确解释..它编译得很好但是在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];
}
}
答案 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
。