试图在Java中将csv文件读入ArrayList,但元素无意中合并了?

试图在Java中将csv文件读入ArrayList,但元素无意中合并了?,java,csv,file-io,java.util.scanner,Java,Csv,File Io,Java.util.scanner,我有一个csv文件,其中包含我试图放入arraylist的值,但行的最后一个值与第二行的第一个值合并。 见: 我有这样的数据 Account Number,Investment Account,Bank Number,Gender,Balance 2544434, Y, 145556, F,1000 2544578, N, 254309, M, 20000 2544230, N, 150365, F, 500000 1000 2544578 到目前为止,我的代码是 public stat

我有一个csv文件,其中包含我试图放入arraylist的值,但行的最后一个值与第二行的第一个值合并。 见:

我有这样的数据

Account Number,Investment Account,Bank Number,Gender,Balance
2544434, Y, 145556, F,1000
2544578, N, 254309, M, 20000
2544230, N, 150365, F, 500000

1000
2544578

到目前为止,我的代码是

public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO code application logic here 
        List<String> list = new ArrayList<String>();

        try {
            Scanner sc = new Scanner(new File("data.csv"));
            sc.useDelimiter(",");
            sc.nextLine();

            while(sc.hasNext()) {
               list.add(sc.next());
            }
            System.out.println(list.get(4))

}


当我想分开时,它们各自行的最后一个和第一个值合并为一个。我已经搜索了类似的问题,但没有找到任何问题,所以我想知道这里是否有人可以提供帮助我希望使用Scanner模块完成此操作。

在本例中,您已经指出,新行不会分隔CSV格式的每个元素。 要解决此问题,可以使用重载方法
usedimiter
提供一个模式,其中分隔符是逗号,后跟空格或新行

有些正则表达式是这样的:

,\W |[\n]


因为你的纤度计。改为读到“\n”,这将给出每一行。然后,您可以使用“,”来打断该行,或者,在将其更改为.hasNextLine()时,使用
进行迭代(sc.hasNextLine())
。它仍然提供相同的输出,我需要如何实现第一个解决方案,以查看这是否可行?谢谢您的时间。如果您不想使用regex(非常合理),您应该使用Ceelos的建议,这是对问题的评论。因此,sc.useDelimiter(“,\\W |[\\n]”)可以像您建议的那样或Ceelos提到的那样作为适当的替代品,阅读“\n”。nextLine()就足够了。看起来很简单,谢谢你的帮助是的,非常接近,它接受
字符串
模式
(这将是一个正则表达式),我相信你必须执行
sc.useDelimiter(Pattern.compile(“,\\W |[\\n]”)
。再次感谢,我可能会创建一个java类对象,然后将csv文件读入其中,因此我不需要依赖于使用模式编译。我可能应该这样做,或者从那开始,但是谢谢你给我澄清了这个问题!