0
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,感谢您的帮助

4

1 回答 1

1

这种方法的一个大问题是,除非文件中的每一行都以逗号结尾,否则不会分隔换行符。更好的方法是读取每一行,用逗号分隔,然后一次将值添加到 ArrayLists 中:

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
    }
}

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

于 2013-10-13T23:30:54.140 回答