Как прочитать файл .txt со значениями x и y и преобразовать его в массив?

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

У меня есть текстовый файл, содержащий значения x, y:

23, 92
26, 16
45, 14
32, 11
43, 17
46, 58

изображение здесь для значений x и y

и так далее.....(так много значений)

и я хочу преобразовать его в массивы:

double [] x= { 23, 26, 45, 32, 43, 46,...}
double [] y= { 92, 16, 14, 11, 17, 58,...}

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

У меня до сих пор нет кода для этого. Пожалуйста помоги :(


person Johanna    schedule 08.06.2016    source источник
comment
Это похоже на вопрос задания, задавать такие вопросы напрямую не рекомендуется. Лучшим способом было бы разделить ваши проблемы на более мелкие проблемы, например. 1) как читать текстовый файл на определенном языке программирования, например. ruby 2) как использовать массивы в ruby, а затем вы должны попытаться соединить эти точки, чтобы выполнить задание. Кроме того, эти вопросы тривиальны, и вам необходимо выполнить поиск в существующей базе вопросов, прежде чем публиковать их как новые вопросы.   -  person Usman    schedule 13.06.2016


Ответы (2)


Поскольку вы заранее не знаете, сколько у вас вершин, рассмотрите возможность использования двух коллекций List вместо двух массивов.

Это позволит вам следовать приведенному ниже алгоритму:

  • Подготовьте два списка, listx и listy
  • В цикле прочитать два целых числа, x и y
  • Если два целых числа недоступны, выйти из цикла
  • В противном случае добавьте x в listx и y в listy.

Как только цикл завершится, ваши очки будут храниться в двух параллельных коллекциях.

person Sergey Kalinichenko    schedule 08.06.2016

public class ReadFile{
    public static void main(String[] args){
        BufferedReader br  = new BufferedReader(new BufferedReader(new FileReader("pathToFile")));
        String line = "";
        // reading when each line has x, y
        while((line = br.readLine())!=null){
             String[] t = line.split(",");
             double x = Double.parseDouble(t[0].trim());
             double y = Double.parseDouble(t[1].trim());
             // store it in the array/list
             // or create a Class Pair having x & y coordinate      
        } 
    }
}

с классом Pair это будет выглядеть так

class Pair{
   double x , y;
   Pair(double x , double y){
     this.x = x;
     this.y = y;
   }
}

// the reading logic
    public class ReadFile{
        public static void main(String[] args){
            List<Pair> pointList = new ArrayList<Pair>();
            BufferedReader br  = new BufferedReader(new BufferedReader(new FileReader("pathToFile")));
            String line = "";
            while((line = br.readLine())!=null){
                 String[] t = line.split(",");
                 double x = Double.parseDouble(t[0].trim());
                 double y = Double.parseDouble(t[1].trim());
                 // store it in the array/list
                 // or create a Class Pair having x & y coordinate
                 Pair p = new Pair(x,y);
                 pointList.add(p);       
            } 
        }
    }
person Ankit Deshpande    schedule 08.06.2016
comment
Нет причин создавать класс для пар java.awt.Point или java.awt.geom.Point2D.Double. - person OneCricketeer; 08.06.2016
comment
В вопросе он преобразует их в двойной массив, чтобы использовать java.awt.Point ему понадобятся целые значения - person Ankit Deshpande; 08.06.2016
comment
Конечно, поэтому я упомянул второй вариант - person OneCricketeer; 08.06.2016
comment
Благодарю вас! Теперь моя единственная проблема - построить график этих массивов. Я все еще ищу способы, как это графически изобразить. Еще раз большое спасибо! - person Johanna; 09.06.2016
comment
взгляните на эту ссылку stackoverflow.com/questions/1277126/plot-graphs-in-java - person Ankit Deshpande; 09.06.2016
comment
Спасибо, но нам не разрешено использовать jfreechart... :( - person Johanna; 09.06.2016