Я пытаюсь проанализировать через отформатированный файл фиксированной ширины, извлекающий x, y значения точек от него, и затем хранящий их в int[]
выстройте в Векторе. Текстовый файл смотрит следующим образом:
0006 0015
0125 0047
0250 0131
Это - код:
Vector<int[]> vc = new Vector<int[]>();
try {
BufferedReader file = new BufferedReader(new FileReader("myfile.txt"));
String s;
int[] vec = new int[2];
while ((s = file.readLine()) != null) {
vec[0] = Integer.parseInt(s.substring(0, 4).trim());
vec[1] = Integer.parseInt(s.substring(5, 8).trim());
vc.add(vec);
}
file.close();
} catch (IOException e) {
}
for(int i=0; i<vc.size(); i++){
for(int j=0; j<2; j++){
System.out.println(vc.elementAt(i)[j]);
}
}
Но вывод показывает только последнюю строку.
250
131
250
131
250
131
Если я так или иначе использую Vector.nextElement()
здесь получить все мои данные?
Вам нужно создавать новый int[] при каждом проходе цикла
while ((s = file.readLine()) != null) {
int[] vec = new int[2];
vec[0] = Integer.parseInt(s.substring(0, 4).trim());
vec[1] = Integer.parseInt(s.substring(5, 8).trim());
vc.add(vec);
}
Иначе у вас будет несколько ссылок на один и тот же массив, который вы перезаписываете при каждом проходе.
По сути, вы добавляете один и тот же массив три раза к вектору
при обновлении его значения (поэтому значение, которое у вас есть, оно является последним в файле).
В конце у вас будет 3 ссылки в векторе
, которые указывают на одну и ту же переменную, вам нужно создавать новую ссылку на каждой итерации, а не только в начале. Это потому, что vec
не дублируется, когда вы добавляете его в вектор, передается только его ссылка.