Переход от вектора к вектору - PullRequest
0 голосов
/ 27 февраля 2012

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

Я не могу найти решение нигде в Интернете. У меня есть код для первого вектора и код для его преобразования в двойные числа, которые будут использоваться вектором. Но мне нужно знать, как вытащить данные из первого вектора!

Я новичок в Java, поэтому я прошу прощения, если это действительно простой вопрос!

Вот код, который я написал до сих пор ... У меня пока нет драйвера, поэтому я не могу его протестировать. заранее извините!

import java.io.*;
import java.util.*;

public class PointField {

     String ID;
     Vector<String> v;
     Vector<Point> v1;

     public PointField() {
           v = new Vector<String>(); 
           this.v1 = new Vector<Point>();
           this.ID = new String();
     }

     public String getID() {
           return this.ID;
     } 

     public Vector<String> getv() {
           return v;
     } 

     public Vector<Point> getv1() {
           return this.v1;
     } 

//Read all the lines from a file
     public Vector<String> getString(String fileName) throws Exception{

// Variable declarations
           File inputFile;
           FileInputStream inputStream;
           InputStreamReader inputStreamRead;
           BufferedReader br;

// Make the objects needed
           inputFile = new File(fileName);
           inputStream = new FileInputStream(inputFile);
           inputStreamRead = new InputStreamReader(inputStream);
           br = new BufferedReader(inputStreamRead);

// read all the lines and call getPoint method
           while (this.ID!= null) {
               this.ID = br.readLine();
               v.addElement(this.ID);
}
// DOESNT WORK FROM HERE Get String out of Vector v and make it return it as String ID
 public String getString(Vector<String> v) {
      Iterator<String> it;
      it = this.v.iterator();
      while(it.hasNext()) {
      this.ID = (String)it.next();
      }

             return ID; 
 }

//* Get String into two doubles and assign to x,y variables     
     public Point makePoints(String s, String delim) {
           while (st.hasMoreTokens()){
               st = new StringTokenizer(s, delim);  
               p = new Point(x,y);
               x = Double.parseDouble(st.nextToken());
               y = Double.parseDouble(st.nextToken());
          }     
            return p;       
    }


}

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Может быть, вы найдете полезную эту из Apache Collection Util Или в этой библиотеке вы можете найти различные методы для работы со списком (преобразование, фильтр и т. Д.)

Проблема у вас в том, что итератор ... вместо it = this.v.iterator(); делает переменную экземпляра с этим итератором

0 голосов
/ 28 февраля 2012

Ваш метод getString() всегда будет возвращать только последний элемент вектора, потому что он каждый раз создает новый итератор, проходит через все элементы, а затем возвращает последний.

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

Я предлагаю вам затем выполнить итерацию по этому вектору, преобразовать каждый элемент в новую форму с помощью вызова метода (пересмотренной версии makePoints, которая обрабатывает одну точку за раз, а затем добавить результат в v2.Если вы все еще хотите использовать 2 Векторов.

Iterator<String> it = v.iterator();
while(it.hasNext()) {
   Point p = makePoint(it.next());
   v2.add(p);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...