Загрузка данных от файла до Векторной структуры

Я пытаюсь проанализировать через отформатированный файл фиксированной ширины, извлекающий 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() здесь получить все мои данные?

6
задан Balaji Kandasamy 24 February 2014 в 05:37
поделиться

2 ответа

Вам нужно создавать новый 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
ответ дан 17 December 2019 в 07:01
поделиться

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

В конце у вас будет 3 ссылки в векторе , которые указывают на одну и ту же переменную, вам нужно создавать новую ссылку на каждой итерации, а не только в начале. Это потому, что vec не дублируется, когда вы добавляете его в вектор, передается только его ссылка.

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: