CSV文件的输出不正确 import java.util.Scanner; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.util.array; 导入java.util.ArrayList; /** *在这里写下类ReadInCsv的描述。 * *@作者(凯文·纳普) *@版本(10-10-2013) */ 公共类ReadInCsv { 公共静态void main(字符串[]args) { 字符串csvName=“Countries.csv”; 文件csvFile=新文件(csvName); ArrayList nameList=新的ArrayList(); ArrayList popList=新的ArrayList(); ArrayList areaList=新建ArrayList(); ArrayList gdpList=新的ArrayList(); ArrayList litRateList=新的ArrayList(); 尝试 { Scanner in=新的扫描仪(csvFile)。使用分隔符(“,”); while(在.hasNext()中) { 字符串名称=in.next(); 姓名列表。添加(姓名); 字符串pop=in.next(); 添加(pop); 字符串区域=in.next(); 区域列表。添加(区域); 字符串gdp=in.next(); 加总产值(gdp); 字符串litRate=in.next(); 添加(litRate); } in.close(); System.out.println(名称列表); System.out.println(popList); 系统输出打印项次(区域列表); 系统输出打印LN(gdpList); System.out.println(litRateList); } catch(filenotfounde异常) { e、 printStackTrace(); } } }

CSV文件的输出不正确 import java.util.Scanner; 导入java.io.File; 导入java.io.FileNotFoundException; 导入java.util.array; 导入java.util.ArrayList; /** *在这里写下类ReadInCsv的描述。 * *@作者(凯文·纳普) *@版本(10-10-2013) */ 公共类ReadInCsv { 公共静态void main(字符串[]args) { 字符串csvName=“Countries.csv”; 文件csvFile=新文件(csvName); ArrayList nameList=新的ArrayList(); ArrayList popList=新的ArrayList(); ArrayList areaList=新建ArrayList(); ArrayList gdpList=新的ArrayList(); ArrayList litRateList=新的ArrayList(); 尝试 { Scanner in=新的扫描仪(csvFile)。使用分隔符(“,”); while(在.hasNext()中) { 字符串名称=in.next(); 姓名列表。添加(姓名); 字符串pop=in.next(); 添加(pop); 字符串区域=in.next(); 区域列表。添加(区域); 字符串gdp=in.next(); 加总产值(gdp); 字符串litRate=in.next(); 添加(litRate); } in.close(); System.out.println(名称列表); System.out.println(popList); 系统输出打印项次(区域列表); 系统输出打印LN(gdpList); System.out.println(litRateList); } catch(filenotfounde异常) { e、 printStackTrace(); } } },java,csv,Java,Csv,因此,我试图从csv文件中读取数据,在读取过程中,应该将每个扫描的实例添加到数组列表中(稍后我将引用这些列表中的每个元素),但我的输出显示,一旦它读取某个内容并将其添加,它会在读取下一个字符串之前跳到下一行,我需要它直接读取,不斜 我肯定我错过了一些非常简单的东西,大约一周前我才开始学习java,谢谢你的帮助。这种方法的一个大问题是,除非文件中的每一行都以逗号结尾,否则换行符不会被分隔。更好的方法是读入每一行,用逗号分隔,然后将值一次一行添加到ArrayList中: import java.ut

因此,我试图从csv文件中读取数据,在读取过程中,应该将每个扫描的实例添加到数组列表中(稍后我将引用这些列表中的每个元素),但我的输出显示,一旦它读取某个内容并将其添加,它会在读取下一个字符串之前跳到下一行,我需要它直接读取,不斜


我肯定我错过了一些非常简单的东西,大约一周前我才开始学习java,谢谢你的帮助。这种方法的一个大问题是,除非文件中的每一行都以逗号结尾,否则换行符不会被分隔。更好的方法是读入每一行,用逗号分隔,然后将值一次一行添加到ArrayList中:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.ArrayList;


/**
 * Write a description of class ReadInCsv here.
 * 
 * @author (Kevin Knapp) 
 * @version (10-10-2013)
 */
public class ReadInCsv
{
   public static void main(String[] args)
   {
       String csvName = "Countries.csv";
       File csvFile = new File(csvName);
       ArrayList<String> nameList = new ArrayList<>();
       ArrayList<String> popList = new ArrayList<>();
       ArrayList<String> areaList = new ArrayList<>();
       ArrayList<String> gdpList = new ArrayList<>();
       ArrayList<String> litRateList = new ArrayList<>();




         try
         {
           Scanner in = new Scanner(csvFile).useDelimiter(",");



            while (in.hasNext())
          {

           String name = in.next();
           nameList.add(name);
           String pop = in.next();
           popList.add(pop);
           String area = in.next();
           areaList.add(area);
           String gdp = in.next();
           gdpList.add(gdp);
           String litRate = in.next();
           litRateList.add(litRate);

         }
           in.close();
           System.out.println(nameList);
           System.out.println(popList);
           System.out.println(areaList);
           System.out.println(gdpList);
           System.out.println(litRateList);

         } 
        catch (FileNotFoundException e)
         {
            e.printStackTrace();
         }


    }
}

更好的方法是使用专用于读取CSV文件的Java库。快速的谷歌搜索应该会找到一些不错的搜索结果。

啊,我在1号的时候也有类似的东西,我把所有的东西都读入了一个长长的数组中,但出于某种原因我开始改变东西,我的问题是我应该停留在我开始的想法上,所以让我看看我是否掌握了这一点,我更愿意理解,然后简单地让某人为我回答这个问题,我想我最初有一个长数组,所以我假设使用in.nextLine().split(“,”);将从元素索引(0-4)的新迭代开始,而不是继续使用索引5+(这是我最初的问题,因为您对.nextLine()中
的理解是正确的。拆分(“,”
)似乎是正确的。另一种思考方式是,CSV文件相当于一个电子表格(Excel等)。每一行都是一个单独的条目。您希望一次读取每一行,然后在移动到下一行之前对该行进行操作,而不是将行链接在一起或尝试对每个单元格进行操作。如果这有意义的话。啊,是的,我使用excel工作表作为调试我的代码的测试csv。非常感谢,现在工作非常好
Scanner in = new Scanner(csvFile);
while (in.hasNextLine()) {
    String[] fields = in.nextLine().split(",");
    if (fields.length == 5) {
        nameList.add(fields[0]);
        popList.add(fields[1]);
        areaList.add(fields[2]);
        gdpList.add(fields[3]);
        litRateList.add(fields[4]);
    } else {
        // Bad line...do what you want to show error here
    }
}