Пытаетесь прочитать CSV-файл в ArrayList в Java, но элементы непреднамеренно объединяются? - PullRequest
0 голосов
/ 05 февраля 2020

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

У меня есть такие данные,

Account Number,Investment Account,Bank Number,Gender,Balance
2544434, Y, 145556, F,1000
2544578, N, 254309, M, 20000
2544230, N, 150365, F, 500000

, и мой код пока такой:

public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO code application logic here 
        List<String> list = new ArrayList<String>();

        try {
            Scanner sc = new Scanner(new File("data.csv"));
            sc.useDelimiter(",");
            sc.nextLine();

            while(sc.hasNext()) {
               list.add(sc.next());
            }
            System.out.println(list.get(4))

}

Вывод выглядит так,


1000
2544578

с последним и первым значением их соответствующих строк, сливающихся в один, когда я хотел бы оставить это отдельно. Я искал похожие вопросы и не смог найти ни одного, поэтому мне интересно, может ли кто-нибудь здесь помочь. Я бы хотел, чтобы это было сделано с помощью модуля сканера.

1 Ответ

0 голосов
/ 05 февраля 2020

В этом случае вы уже указали, что новая строка не разделяет каждый элемент формата CSV. Чтобы исправить это, вы можете использовать перегруженный метод useDelimiter для предоставления шаблона, в котором разделителем является или запятая, за которой следует пробел или новая строка.

Некоторое регулярное выражение, например, так :

, \ W | [\ n]

...