0

1行に3つの文字列データ型で構成されるデータファイルを読み込んでいます。各行は個別に読み取られ、tempと呼ばれるArrayListに格納されます。tempの3番目の要素を取得し、それをマップのキーとして使用して、キーをTempのコンテンツにマップし、各行に対してこれを実行したいと思います。次のコードがあります。これはコンパイルされますが、実行すると、parsedDataへの割り当てでnullエラーが発生します。

Map<String,ArrayList<String> > parsedData;
    int pos;
    String line;
    StringBuilder buffer = new StringBuilder();
    ArrayList<String> temp;// = new ArrayList<String>();
    try {
        temp = new ArrayList<String>();
        while ((line = inBufR.readLine()) != null){
            buffer.append(line);
            while (buffer.length() != 0){
                pos = buffer.indexOf(delim);
                if (pos != -1){ //Cases where delim is found
                    temp.add( buffer.substring(0,pos).trim() );
                    buffer.delete(0,pos+delim.length()); //Cannibalizing the string
                    while ( (buffer.indexOf(delim)) == 0){
                        buffer.delete(0,delim.length());
                    }
                } else { //Cases where delim is not found
                    temp.add( buffer.substring(0,buffer.length()).trim() );
                    buffer.delete(0,buffer.length()); //clearing the string
                } // else
            }//while (buffer.length() !=0
            parsedData.put(temp.get(keyCol) , temp);        
            temp.clear();
        }//while ((buffer = inBufR.readLine()) !=null)
    } catch (Exception e) {
        System.err.println("ERROR: " + e.getMessage()); 
    }
4

2 に答える 2

0

( parseDataNullPointerException )を初期化しないため、取得している理由。次のように parseData を初期化する必要があります。Map

Map<String, List<String> > parsedData = new HashMap<String, ArrayList<String>>();
于 2012-10-23T19:18:38.790 に答える
0

parsedData を何にも初期化していません。参照がありnullます。putnull 参照で実行しようとすると、 が表示されますNullPointerException

Map<String,ArrayList<String> > parsedData= new HashMap<String, ArrayList<String>>();
于 2012-10-23T19:17:47.087 に答える