Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как прочитать массив данных из файла


Автор: TheVines 11.4.2017, 17:46
Здравствуйте.
Я только начинаю учить Java, более того еще не дошел до темы, которая будет здесь обсуждаться, но очень нужно решить данную задачу. Поэтому заранее прошу прощение неграмотный код и нелепые ошибки.
Задача в следующем: есть текстовый файл 1.txt, содержащий координаты точек в формате (имя,X,Y,Z). В качестве разделителей выступает запятые.
Нужно импортировать данные координаты в таком виде, чтобы можно было производить математические операции с координатами.
Мне кое как получилось импортировать данные в виде текста.

Код

import javax.swing.JFileChooser;
import java.io.*;

public class DataT{
    public static void main (String[] args){
    
        JFileChooser fileopen = new JFileChooser();
    int ret = fileopen.showDialog(null, "Open File");                
    if (ret == JFileChooser.APPROVE_OPTION) {
        File file = fileopen.getSelectedFile();
        try (BufferedReader br = new BufferedReader(new FileReader(file))){
            String s;
            StringBuilder s2 = new StringBuilder();
            while ((s=br.readLine())!=null){
                s2.append(s+"\n");
            }
                System.out.println(s2);
                br.close();
            
        }
        catch (IOException exc){
            System.out.println(exc.getMessage());
        }
    }
}}


Автор: vpf 11.4.2017, 20:40
Код

//package ;

import javax.swing.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class DataCoord {
    private static class Coord {
        double x;
        double y;
        double z;
        public Coord(String s) {
            String[] strs = s.split(",");
            x = Double.valueOf(strs[1]);
            y = Double.valueOf(strs[2]);
            z = Double.valueOf(strs[3]);

        }

        @Override
        public String toString() {
            return "["+x +","+ y +"," + z + "]";
        }
    }
     public static void main (String[] args){
        DataCoord.check(null);
    }

    private static void check(String[] args) {
        JFileChooser fileopen = new JFileChooser();
        int ret = fileopen.showDialog(null, "Open File");

        List< Coord> list = new ArrayList<>();


        if (ret == JFileChooser.APPROVE_OPTION) {
            File file = fileopen.getSelectedFile();
            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String s;
                while ((s = br.readLine()) != null) {
                    list.add(new Coord(s));
                }
                br.close();
            } catch (IOException exc) {
                System.out.println(exc.getMessage());
            }
            for (Coord coord : list) {
                System.out.println(coord.x+":"+coord.y+":"+coord.z);
            }


        }
    }

}


В качестве источника данных выступает List<Coord>  list каждый экземпляр списка  Coord содержит координаты x,y,z в формате double
Доступ к координатам  показан внизу кода, при распечатке.

Автор: TheVines 12.4.2017, 13:14
vpf, Спасибо, но я, наверное , Вас не совсем понял, так как в строке 23 у меня возникает ошибка "The type List is not generic; it cannot be parameterized with arguments".

Автор: vpf 12.4.2017, 14:39
Отредактировал исходник, только добавил библиотеки.
А вот и ответ http://stackoverflow.com/questions/17385961/the-type-list-is-not-generic-it-cannot-be-parameterized-with-arguments-httpcli

Автор: TheVines 13.4.2017, 08:11
vpf, Сейчас требует добавить основной метод: "Main method not found in class DataT, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
"

Автор: vpf 13.4.2017, 08:33
Отредактировал исходник. Проверяйте.

Автор: TheVines 14.4.2017, 13:22
vpf
Ошибка.

Автор: vpf 14.4.2017, 14:40
Смотрите отладчиком, с приведенным файлом данных 1.txt  все работает вот снимок

Автор: TheVines 14.4.2017, 15:48
vpf, Спасибо, буду искать проблему!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)