5

私のコードで奇妙なことが起こっています。何が起こっているのかわかりません。次のようなファイルがあります。

id;state;city;total_pop;avg_temp
1;Florida;;120000;76
2;Michigan;Detroit;330000;54
3;New Jersey;Newark;;34

私のJavaパーサーは、結果としてマップのリストを作成して返す必要があります。ただし、返されるのは、ファイル内の行数だけ繰り返されるファイル内の最後のレコードだけです。誰かが私のコードを見て、何が起こっているのか教えてくれますか? 前もって感謝します。

public class FileParserUtil {

    public List<Map<String, String>> parseFile(String fileName, char seperator)
            throws IOException {

        CSVReader reader = new CSVReader(new FileReader(fileName), seperator);
        Map<String, String> record = new HashMap<String, String>();
        List<Map<String, String>> rows = new ArrayList<Map<String, String>>();

        String[] header = reader.readNext();
        String[] nextLine;

        while ((nextLine = reader.readNext()) != null) {
            for (int i = 0; i < header.length; i++) {
                record.put(header[i], nextLine[i]);
            }
            System.out.println("--------Here is the record: ---------");
            System.out.println(record);
            rows.add(record);
            System.out.println("--------Here are the rows: ---------");
            System.out.println(rows);
        }
        reader.close();
        return rows;

    }
}

これは、上記の main メソッドからの実行のコンソール出力です...

--------Here is the record: ---------
{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}
--------Here are the rows: ---------
[{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}]
--------Here is the record: ---------
{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}
--------Here are the rows: ---------
[{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}, {id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}]
--------Here is the record: ---------
{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}
--------Here are the rows: ---------
[{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}]
4

4 に答える 4