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

如何在java中访问动态字符串数组的元素?,java,arrays,pointers,dynamic,Java,Arrays,Pointers,Dynamic,我正在尝试使用opencsv()。下载opencsv时包含了一些示例。下面是他们创建动态数组示例的摘录: CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE)); String [] nextLine; while ((nextLine = reader.readNext()) != null) { System.out.println("Name: [" + nextLine[0] + "]\nAddress: ["

我正在尝试使用opencsv()。下载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当前有一个指针指向它的最后一个位置或超过它的最后一个位置。我想我的问题是,如何控制指针?

nextLine==null
时,退出循环。因此,当您将
println
语句移出循环时,
nextLine
null
。错误
“空指针访问:变量nextLine只能在此位置为空。”
完全有意义

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

在进入循环之前添加以下内容:

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

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

不,您误解了这里的错误。由于循环的条件是一直持续到
nextLine==null
,因此可以保证此后循环将
null
,这就是Eclipse抱怨的原因。你必须在循环中使用变量或者改变你的条件。哦!所以写的代码会丢弃所有的读取行,对吗?它只是在每次迭代中不断覆盖同一个数组,那么在最后一次迭代中它会将null写入该数组吗?非常感谢!为每个读取行创建一个新数组,但在下一次迭代中丢失(覆盖)对它的引用。因此,您的读取行可能仍在内存中,但它们符合垃圾收集的条件,您无法再访问它们。在代码中的最后一次循环迭代之后,您的引用将指向
null
,并且您不能再访问任何行。
readLines.add(nextLine);