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ファイルから読み込もうとしていて、スキャンされた各インスタンスを配列リストに追加する必要があります(後でこれらのリストから各要素を参照します)が、私の出力はそれが読み込まれるとすぐにそれを示します何かを追加すると、次の文字列を読み取る前に次の行にスキップします。斜めではなく、まっすぐに読み取る必要があります

非常に単純なものが欠けていると確信しています。約1週間前にJavaの学習を始めたばかりです。助けてくれてありがとう

4

1 に答える 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 ライブラリを使用することです。簡単なGoogle検索で、いくつかの良いものが表示されるはずです.

于 2013-10-13T23:30:54.140 に答える