为什么在读取.csv文件时出现ArrayIndexOutOfBoundsException?

时间:2019-05-18 16:27:01

标签: java csv apache-commons opencsv

我正在尝试读取.csv文件,如下所示:

BufferedReader reader = Files.newBufferedReader(Paths.get("przedmioty.csv"));

CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT.withHeader("Name", "Teacher", "Years").withIgnoreHeaderCase().withTrim());

for (CSVRecord csvRecord: csvParser) {
    // Accessing Values by Column Index

    String name = csvRecord.get(0);
    //Accessing the values by column header name
    String Teacher= csvRecord.get(1);
    String years = csvRecord.get(2);

    //Printing the record
    System.out.println("Record Number - " + csvRecord.getRecordNumber());
    System.out.println("Name: " + name);
    System.out.println("Teacher: " + Teacher);
    System.out.print("Years : " + years );
    System.out.println("\n\n");
}

我的.csv就是这样

    Name            Teacher                 Years
    Math            Leszek Krauze           2
    X               Grimm Dostojowksi       3
    Y               Dimitriv Vladiskovic    4

我要

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:79)
at main.Task01.main(Task01.java:294)

我使用apache commons csv。

1 个答案:

答案 0 :(得分:-1)

我尝试使用以下代码,对我来说很好。您也可以检查。我正在使用通用CSV版本1.4。请检查下面的代码。我已经修改了下面的代码。

static boolean redcheck(int array[])// checks if letters are repeated
{
    for(int i=0;i<array.length-1;i++)
    {
        for(int j=i+1;j<array.length;j++)
        {
            if(array[i]==array[j])
            {
                return false;
            }
        }
    }
    return true;
}

您提到的制表符分隔的CSV文件存在问题。 我在github链接下方提供了该链接,以便您可以运行和测试,并且在testdata文件夹中还包含一个csv文件。这是基于Maven的项目。

https://github.com/debjava/sample-tab-csv-parser 希望它能解决您的问题。