0

我想知道为什么在下面标记的行上出现空指针异常,我正在尝试将属性表中的内容添加到对象映射中,因此我可以将列信息插入到 JTable 中,不知道它是否 100% 清楚,但任何输入将不胜感激

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

2 回答 2

5
Object [][] data = null;

数组为空。你需要分配空间:

Object [][] data = new Object[5][5];

或任何你想要的尺寸。

除非您知道数组的行/列的大小,否则最好将向量的向量用于 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);
}
于 2013-06-08T04:34:58.440 回答
1

发生空指针异常是因为您已将数组初始化为空。您需要为数组分配一些内存,现在它只是此处定义的 null:

Object [][] data = null;

您应该知道,您拥有的阵列需要多大的尺寸。您不能简单地将其初始化为任何值。如果您不知道大小,请考虑使用可以动态增长的集合。

您可以考虑使用 Arraylist 列表并将其定义为:

List<List<Object>> lists = new ArrayList<List<Object>>();
于 2013-06-08T04:36:05.933 回答