如何在java中访问动态字符串数组的元素?

时间:2012-11-10 23:17:27

标签: java arrays pointers dynamic

我正在尝试使用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

如果我将println语句移到while循环之外,我在Eclipse中会出错:“Null指针访问:变量nextLine在此位置只能为null。”

我的猜测是nextLine有一个指针,指向它的最后一个位置或超过它的最后一个位置。我想我的问题是,如何控制指针?

1 个答案:

答案 0 :(得分:2)

nextLine == null时退出循环。因此,当您将println语句移出循环时,nextLinenull。错误"Null pointer access: the variable nextLine can only be null at this location."完全有道理。

要访问循环后您阅读的所有内容,您可以执行以下操作:

在进入循环之前添加:

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

并在循环中执行此操作:

readLines.add(nextLine);

因此,在循环之后,您可以从readLines列表中读取所有读取行。