2017-01-24 19 views
0

Я пытаюсь прочитать файл csv, который имеет 3 столбца и неуказанное количество строк. Затем я пытаюсь взять каждый столбец и прочитать каждый в собственном массиве. Первый столбец - это имя, второе - оценка, а третья - трудность. Любая помощь приветствуется. Текущий код:Как читать в отдельных списках массивов с помощью openCSV?

public static void main(String[]args) throws IOException{ 
    ReadFile f = new ReadFile(); 
} 

public CSVReader reader; 

ReadFile(){ 
    ArrayList myEntries = new ArrayList<>(); 
    ArrayList<String> nameList = new ArrayList<>(); 
    ArrayList<String> scoreList = new ArrayList<>(); 
    ArrayList<String> difficultyList = new ArrayList<>(); 

    try { 
     reader = new CSVReader(new FileReader("H:\\S6\\AH Computing\\Java Practice\\leaderboard.csv")); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    try { 
     myEntries.add(reader.readAll()); 
    } catch (IOException ex) { 
     Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    for(int i = 1; i< myEntries.size();i++){ 
     try { 
     myEntries.add(reader.readNext()); 
    } catch (IOException ex) { 
     Logger.getLogger(ReadFile.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    } 

    for(int i = 1; i< myEntries.size();i++){ 
     nameList.add((String) myEntries.get(i)); 
     i++; 
     scoreList.add((String) myEntries.get(i)); 
     i++; 
     difficultyList.add((String) myEntries.get(i)); 
    } 
} 
+0

Каким образом ваш код не работает? –

+0

Код компилируется. Он не будет читать файл в первую очередь, так как когда я пытаюсь распечатать myEntries, он ничего не печатает. Путь к файлу правильный, как я ранее писал в тот же файл. –

+0

Я бы удалил все ваши исключения, и только один в конце. Как бы то ни было, если файл не существует, он все равно пытается его прочитать. Вы получаете какие-либо ошибки? –

ответ

0

Ну есть несколько проблем с вашим кодом. Прежде всего, CSVReader readAll метод считывает весь файл и возвращает список, поэтому при изменении кода myEntries.add (reader.readAll()); to myEntries.addAll (reader.readAll());

Теперь, когда вы прочитали весь файл в памяти, нет необходимости делать readNext. Так что удалите весь этот try/catch.

Теперь то, что у вас есть это список так изменить

for(int i = 1; i< myEntries.size();i++){ 
     nameList.add((String) myEntries.get(i)); 
     i++; 
     scoreList.add((String) myEntries.get(i)); 
     i++; 
     difficultyList.add((String) myEntries.get(i)); 
    } 

в

for(int i = 1; i< myEntries.size();i++){ 
     String[] entries = myEntries.get(i); 
     nameList.add(entries[0]); 
     scoreList.add(entries[1]); 
     difficultyList.add(entries[2]); 
    } 

Некоторые типажей могут быть необходимы.

Для получения дополнительной информации вы можете посмотреть на javadocs opencsv по телефону http://opencsv.sourceforge.net/apidocs/index.html.

 Смежные вопросы

  • Нет связанных вопросов^_^