Java 逐行阅读时如何打印上一行和下一行以比较字符串

Java 逐行阅读时如何打印上一行和下一行以比较字符串,java,Java,我正在逐行阅读csv文件,并试图比较上一行、当前行和下一行。我知道我需要在读一行时保存三个字符串变量。但我一直在思考如何保存我的三个变量,以便在读取第4行时能够打印第3行和第5行。将它们保存在数组中。然后使用-1和+1相对于索引号进行循环。不要忘记检查-1和+1是否确实存在,并捕获异常以防万一。将它们保存在数组中。然后使用-1和+1相对于索引号进行循环。不要忘记检查-1和+1是否确实存在,并捕获异常以备不时之需。如果输入变得非常大,您将为一些本应具有恒定内存的内容消耗大量内存。感谢提示,我将尝试

我正在逐行阅读csv文件,并试图比较上一行、当前行和下一行。我知道我需要在读一行时保存三个字符串变量。但我一直在思考如何保存我的三个变量,以便在读取第4行时能够打印第3行和第5行。

将它们保存在数组中。然后使用-1和+1相对于索引号进行循环。不要忘记检查-1和+1是否确实存在,并捕获异常以防万一。

将它们保存在数组中。然后使用-1和+1相对于索引号进行循环。不要忘记检查-1和+1是否确实存在,并捕获异常以备不时之需。

如果输入变得非常大,您将为一些本应具有恒定内存的内容消耗大量内存。感谢提示,我将尝试一下。如果您不需要存储输入,glowcoder的解决方案会更好。他的解决方案更有效,因为它只通过一次。我的需要2个或更多的内存。不过,如果输入文件很小,ArrayList(而不是数组)可以正常工作。如果输入非常大,最终会消耗大量内存用于本应具有恒定内存的内容。谢谢提示,我会试试。如果你不需要存储输入,glowcoder的解决方案会更好。他的解决方案更有效,因为它只通过一次。我的需要2个或更多的内存。虽然如果输入文件很小,ArrayList(而不是数组)可以很好地工作。glowcoder-你是一个救生员,你让它看起来很简单。谢谢大家!@corsiKa如果我想在第一步中使用当前元素(curr),我将得到一个空指针异常。有解决办法吗?@serendipity是的,让我记住6年前我在哪里停下来的。好的,明白了。首先声明扫描程序,然后声明字符串。使上一个和当前为空,并使下一个sc.nextLine为空。请注意,这将导致您跳过最后一个元素,因此您也必须在循环结束后执行逻辑。但是你会发现在调试过程中。glowcoder-你是一个救生员,你让它看起来很简单。谢谢大家!@corsiKa如果我想在第一步中使用当前元素(curr),我将得到一个空指针异常。有解决办法吗?@serendipity是的,让我记住6年前我在哪里停下来的。好的,明白了。首先声明扫描程序,然后声明字符串。使上一个和当前为空,并使下一个sc.nextLine为空。请注意,这将导致您跳过最后一个元素,因此您也必须在循环结束后执行逻辑。但您会发现,在调试过程中。看起来可疑地像Java论坛上的一篇帖子,几天前已经用与glowcoder相同的答案回答了:看起来可疑地像Java论坛上的一篇帖子,几天前已经用与glowcoder相同的答案回答了:
String prev = null;
String curr = null;
String next = null;

Scanner sc = new Scanner(new File("thefile.csv"));

while(sc.hasNextLine()) {
    prev = curr;
    curr = next;
    next = sc.nextLine();

    // now process those lines

}