2

opencsv ( http://opencsv.sourceforge.net/ ) を使用しようとしています。opencsv のダウンロードにサンプルが含まれています。動的配列を作成するための例の抜粋を次に示します。

CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
    System.out.println("Name: [" + nextLine[0] + "]\nAddress: [" + nextLine[1] + "]\nEmail: [" + nextLine[2] + "]");
}

読み込む CSV ファイルは次のとおりです。

Joe Demo,"2 Demo Street, Demoville, Australia. 2615",joe@someaddress.com
Jim Sample,"3 Sample Street, Sampleville, Australia. 2615",jim@sample.com
Jack Example,"1 Example Street, Exampleville, Australia. 2615",jack@example.com

while ループの外に println ステートメントを移動すると、Eclipse でエラーが発生します。

私の推測では、 nextLine には、現在最後の位置を指している、または最後の位置を過ぎたポインターがあります。私の質問は、そのポインターをどのように制御するのですか?

4

1 に答える 1

2

のときにループを終了しますnextLine == nullprintlnしたがって、ステートメントをループの外に移動すると、 nextLineis null. エラー"Null pointer access: the variable nextLine can only be null at this location."は完全に理にかなっています。

ループ後に読み取ったすべてにアクセスするには、次のようにします。

ループに入る前にこれを追加します。

List<String[]> readLines = new ArrayList<>();

そしてループでこれを行います:

readLines.add(nextLine);

したがって、ループの後、すべての読み取り行をreadLinesリストから読み取ることができます。

于 2012-11-10T23:21:12.187 に答える