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として初期化したため、nullポインター例外が発生しています。配列にメモリを割り当てる必要があります。現在、ここで定義されているように null です。

Object [][] data = null;

あなたが持っている配列に必要なサイズを知っておく必要があります。単純に任意の値に初期化することはできません。サイズがわからない場合は、動的に拡張できるコレクションの使用を検討してください。

List of Arraylist の使用を検討し、次のように定義できます。

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