как читать эти конкретные строки в Java - PullRequest
1 голос
/ 05 января 2011

У меня есть CSV-файл, как это:

i,0             <-- 1st line  
f,1,2,3         <-- 2nd line  
s,0,1,2,3,4,5,6 <-- 3rd line  
0,1,A  
0,5,B  
1,1,A  
1,3,B  
2,6,A  
2,4,B  
3,6,A  
3,4,B  
4,6,A  
4,4,B  
5,1,A  
5,5,B  
6,6,A  
6,2,B  

как мне прочитать эти строки в 4 различных массива / массива в Java?
вывод, который я хочу, выглядит примерно так:

  • 1-я строка: 0 [1-й массив]
  • 2-я строка: 1 2 3 [2-й массив] -> всего 1 строка, но длина токена неизвестна
  • 3-я строка: 0 1 2 3 4 5 6 [3-й массив] -> всего 1 строка, но длина токена неизвестна
  • остаток строки: -> исправлено 3 токена, но номер строки неизвестен
    0 1 A
    0 5 B
    1 1 A
    1 3 B
    2 6 A
    2 4 B
    3 6 A
    3 4 B
    4 6 A
    4 4 B
    5 1 A
    5 5 B
    6 6 A
    6 2 B

не может понять это правильно с помощью комбинации сканера и состояния коммутатора.

Ответы [ 2 ]

1 голос
/ 05 января 2011

Я бы не использовал switch.Просто прочитайте файл построчно.Если файл сгенерирован (или вы уверены, что он верный), вы можете прочитать его как

reader = new BufferedReader(new FileReader(...));
array1 = readFirstLine(reader);
array2 = readSecondLine(reader);
array3 = readThirdLine(reader);
// and so on

и реализовать каждый read... метод для обработки одного формата строки.

Обновление: Методы чтения могут выглядеть примерно так:

private String[] readFirstLine(BufferedReader reader) {
    String line = reader.readLine();
    String[] fields = line.split(",");
    return fields;
}
1 голос
/ 05 января 2011

Вы можете использовать Сканер nextLine , чтобы прочитать строки. Поскольку вы хотите, чтобы 1-я, 2-я и 3-я строки принадлежали 1-му, 2-му и 3-му массивам соответственно, вы можете вызвать read 3 раза, а затем использовать метод String split для заполнения массива. Как только вы закончите, вы можете создать цикл и заполнить arraylist, как вы хотите.

Итак, в основном: чтение и разделение (для каждой из первых 3 строк), а затем чтение и заполнение в цикле для остальной части файла.

...