Изучение CSV с Java - PullRequest
       5

Изучение CSV с Java

0 голосов
/ 27 апреля 2020

У меня есть задание на Java: исследовать CSV с некоторыми API. У нас есть несколько CSV-файлов с именем / полом / номером рождения, сначала девочек, а затем мальчиков, например:

First girls and then boys

Мой учитель дал одну функцию:

private int getCsvRowOfMostPopularNameByGender(int year, String gender){
    int rank = -1;
    SEFileUtil seFileUtil = new SEFileUtil(getPathToCSV(year));
    for (CSVRecord record : seFileUtil.getCSVParser()) {
        String currGender = record.get(1);
        if (currGender.equals(gender)){
            rank = (int) record.getRecordNumber();
            break;
        }
    }
    return rank;
} // returning index of the First popular Name

Теперь мне нужно написать функцию, которая возвращает ранг данного имени. Я написал это, используя пример функции:

private int getRank (int year, String name, String sex ){

    SEFileUtil seFileUtil = new SEFileUtil(getPathToCSV(year));
    for (CSVRecord record : seFileUtil.getCSVParser()) {
        if (record.get(0).equals(name) && record.get(1).equals(sex)) {
            return (int) record.getRecordNumber() - getCsvRowOfMostPopularNameByGender(year,sex) + 1;
        }
    }
    return -1;
}

Но затем я захотел найти сам, что я хотел получить доступ непосредственно к индексу i файла CSV, соответствующему рассматриваемому году и возвращающему -1 в случае столкновения вне диапазона. Я попытался объявить новый тип объекта CSVParser или CSVRecord, как мы использовали для for l oop, но без какого-либо успеха

Я думаю, что мы используем API apach: http://commons.apache.org/proper/commons-csv/jacoco/org.apache.commons.csv/index.source.html

1 Ответ

0 голосов
/ 27 апреля 2020

Попробуйте что-то вроде этого

PS: вам следует рассмотреть возможность разделения вашего кода 1. прочитать данные и сопоставить их с соответствующим объектом (строка 1per csv) 2. обработать ваши данные.

Читабельность ключ;)

private int getRow(int index) {

        SEFileUtil seFileUtil = new SEFileUtil(getPathToCSV(year));
        Iterable it = seFileUtil.getCSVParser();
        int i = 0 ;
        while ( it.hasNext() && i < index){
            it.next();
            index++;
        }
       if ( it.hasNext()){
           return it.next() ;
       }
       return ??
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...