我想知道为什么我在下面标记的行上得到一个空指针异常,我试图将属性表中的东西添加到对象映射中,所以我可以将列信息插入到JTable中,不知道它是否为100 %clear,但任何输入都将受到赞赏
public Object getList(){
dvd.loadList(dvd.dvdInventory);
Object [][] data = null;
int i = 0;
int j = 0;
Iterator<Object> kitr= dvd.dvdInventory.keySet().iterator();
Iterator<Object> itr = dvd.dvdInventory.values().iterator();
while(itr.hasNext()){
String key = (String) kitr.next();
String values = (String) itr.next();
String[] tokens = values.split(" / ");
for ( String token : tokens ){
data[j][i] = token.toString(); <------this line gets null
i++; pointer exception
}
i = 0;
j++;
}
return data;
}
答案 0 :(得分:5)
Object [][] data = null;
数组为null。你需要分配空间:
Object [][] data = new Object[5][5];
或任何你想要的尺寸。
除非你知道数组行/列的大小,否则最好使用Vector of Vector作为JTable的DefaultTableModel。
编辑:
要使用向量,您可以将代码重构为:
Vector<Vector<String>> data = new Vector<Vector<String>>();
while(itr.hasNext())
{
String key = (String) kitr.next();
String values = (String) itr.next();
String[] tokens = values.split(" / ");
Vector<String> row = new Vector<String>();
for ( String token : tokens ){
row.add(token.toString());
}
data.add(row);
}
答案 1 :(得分:1)
发生了空指针异常,因为您已将数组初始化为null。你需要为你的数组分配一些内存,现在它只是在这里定义的null:
Object [][] data = null;
您应该知道,您拥有的阵列需要多大的尺寸。您不能简单地将其初始化为任何值。如果你不知道大小,那么考虑使用可以动态增长的集合。
您可以考虑使用Arraylist列表并将其定义为:
List<List<Object>> lists = new ArrayList<List<Object>>();