У меня есть задача из курса структуры данных, которая для меня усложняется. Инструкция заключается в чтении текстового файла в формате: Ana,30,120|Raul,23,178|Laura,15,164; (с 200 элементами) , где первое значение - это имя , вторая - возраст , а третья - рост . Мне нужно добавить в ArrayList. У меня такой код:

public void readFile()
{
    String lineas;
    try
    {
        InputStream fileInputStream = new FileInputStream("datos.txt");
        InputStreamReader reader = new InputStreamReader(fileInputStream, Charset.forName("UTF-8"));
        
        BufferedReader br = new BufferedReader(reader);
        while((lineas = br.readLine()) != null)
        {
            String[] valor = lineas.split(",");
            String name = valor[0];
            int age = Integer.parseInt(valor[1]);
            int height = Integer.parseInt(valor[2]);
            
            persona.add(new Persona(name, age, height));
            
            showMenuOptions();
        }
    } catch (FileNotFoundException ex) {
        System.out.println("File Not Found.");
    } catch (IOException ex) {
        System.out.println("Can't open the File.");
    }
}

Но он выполняет поиск только путем разделения каждой строки в конце, когда он находит, однако мне нужно изменить, чтобы он обнаруживал каждое значение, разделенное ,, и разделял их при нахождении символа |.

0
Joseph Gonzalez 17 Сен 2021 в 19:36

2 ответа

Лучший ответ
    public List<Person> loadPeopleFromFile(String path) {
        List<Person> result = new ArrayList<>();
        try {
            try (Scanner s = new Scanner(new File("datos.txt"))) {
                s.useDelimiter("[|,;]");
                while (s.hasNext()) {
                    result.add(new Person(s.next(), s.nextInt(), s.nextInt()));
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();   
        }
        return result;
    }

Должен сделать это за тебя

0
g00se 17 Сен 2021 в 22:41

Перейдите по ссылке ниже, и вы можете использовать метод split().

Java читает файл в ArrayList?

0
Manoj Piyumal 17 Сен 2021 в 17:12