Java 从csv文件读取数据并存储到阵列中,我的文件将正确打开,但文件读取不正确

Java 从csv文件读取数据并存储到阵列中,我的文件将正确打开,但文件读取不正确,java,csv,Java,Csv,我正在尝试读取csv文件,当我运行此代码以确保正确读取该文件时,除第一行外,所有逗号分隔的数据都正确显示。文件的第一行正在输出,每个字位于不同的行上。我最初读取文件时有什么问题 我的输出示例如下所示: 时间戳, 接近, 高,, 低,, 打开 价值 9:30,57.515,57.57,57.47,57.515,31120 现在,我在本例中的所有单词都在excel文件的同一行上,但当我运行时,timestamp、close、high等都出现在不同的行上,因此我不确定为什么会出现这种情况。扫描仪has

我正在尝试读取csv文件,当我运行此代码以确保正确读取该文件时,除第一行外,所有逗号分隔的数据都正确显示。文件的第一行正在输出,每个字位于不同的行上。我最初读取文件时有什么问题

我的输出示例如下所示: 时间戳, 接近, 高,, 低,, 打开 价值 9:30,57.515,57.57,57.47,57.515,31120
现在,我在本例中的所有单词都在excel文件的同一行上,但当我运行时,timestamp、close、high等都出现在不同的行上,因此我不确定为什么会出现这种情况。

扫描仪hasNext的定义如下:

如果此扫描仪的输入中有另一个标记,则hasNext()返回true

因此,当您使用它时,您正在逐个令牌而不是逐行读取csv文件令牌。除此之外,接下来使用扫描仪执行以下操作:

next()查找并返回此扫描程序中的下一个完整令牌

最后,使用
System.out.println
将在打印数据后插入一个行分隔符,这就是为什么它在输出每个标记后一直转到下一行的原因

按如下所示更改代码,它将按预期工作:

    String fileName = "MSFT.csv";
    File file = new File(fileName);
    try{
        Scanner inputStream = new Scanner(file);
        while(inputStream.hasNext()){
            String data = inputStream.next();
            System.out.println(data);
        }
        inputStream.close();
    }
    catch(FileNotFoundException e){
        e.printStackTrace();

有CSV阅读器库。在这种情况下,请先执行
hasNextLine()
。不太清楚您的意思,请将我的hasNext()替换为hasNextLine()?
String fileName = "MSFT.csv";
File file = new File(fileName);
try{
   Scanner inputStream = new Scanner(file);
   while(inputStream.hasNextLine()){
      String data = inputStream.nextLine();
      System.out.println(data);
   }
   inputStream.close();
}  catch(FileNotFoundException e){
   e.printStackTrace();