Odczyt z pliku i zapis do List<>

0

Cześć, mam problem z odczytem danych i zapisaniu ich do List<>.
Poniżej moj kod, będę wdzięczny za podpowiedz co zmienić lub co usunąć.

W konsoli dostaje tylko informacje o kwadracie zamiast o wszystkich figurach

public abstract class Figury {
    public static List<Figury> figuryList = new ArrayList<>();

    public static void zapiszFiguryDoPliku(List<Figury> figury, String nazwaPliku) throws IOException {
        try (FileWriter writer = new FileWriter(nazwaPliku)) {
            for (Figury figura : figury) {
                writer.write(figura.toString() + "\n");
            }
        }
    }
    public static List<String> wczytajListe(String nazwaPliku) {
        List<String> listaFigurZPliku =new ArrayList<>();
        try {
            BufferedReader brSplit = new BufferedReader(new FileReader(nazwaPliku));
            String line;

            while ((line = brSplit.readLine()) != null) {
                String[] parts = line.split("o", 2);
                String figura = parts[0].trim(); // Nazwa figury

                if (figura.equalsIgnoreCase("Kwadrat")) {
                    String[] kwadratParts = parts[1].trim().split("boku");
                    double bok = Double.parseDouble(kwadratParts[1].trim());
                    listaFigurZPliku.add("Kwadrat o boku: " + bok);
                }
                if (figura.equalsIgnoreCase("Kolo")) {
                    String[] koloParts = parts[1].trim().split("promieniu");
                    double promien = Double.parseDouble(koloParts[1].trim());
                    listaFigurZPliku.add("Koło o promieniu: " + promien);
                }
                if (figura.equalsIgnoreCase("Prostokat")) {
                    String[] prostokatParts = parts[1].trim().split("bokach");
                    String[] boki = prostokatParts[1].trim().split("x");
                    double bokA = Double.parseDouble(boki[0].trim());
                    double bokB = Double.parseDouble(boki[1].trim());
                    listaFigurZPliku.add("Prostokąt o bokach: " + bokA + "x" + bokB);
                }
            }
            brSplit.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return listaFigurZPliku;
    }

a w Main moj kod wyglada następująco

public class Main {
    public static void main(String[] args) {
        List<Figury> figury = Arrays.asList(Figury.stworzKwadrat(10), Figury.stworzKolo(20), Figury.stworzProstokat(10, 20));
        for (Figury f : figury) {
            System.out.println(f);
        }
        Figury figuraZNajwiekszymObwodem = Figury.znajdzFigureZNajwiekszymObwodem();
        if (figuraZNajwiekszymObwodem != null) {
            System.out.println("Figura z największym obwodem: " + figuraZNajwiekszymObwodem);
        } else {
            System.out.println("Brak figur w liście.");
        }
        Figury figuraZNajwiekszymPolem = Figury.znajdzFigureZNajwiekszymPolem();
        if (figuraZNajwiekszymPolem != null) {
            System.out.println("Figura z największym polem: " + figuraZNajwiekszymPolem);
        } else {
            System.out.println("Brak figur w liście.");
        }
        System.out.println(figury.contains(new Kwadrat(10)));
        try {
            Figury.zapiszFiguryDoPliku(figury, "listaFigur.txt");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String nazwaPliku = "listaFigur.txt";

        // Wywołanie metody do wczytywania danych z pliku
        List<String> listaFigur = Figury.wczytajListe(nazwaPliku);

        // Wyświetlenie danych figur z listy
        for (String figura : listaFigur) {
            System.out.println(figura);
        }
    }
}
4

nie wiadomo jak wygląda struktura pliku 🤷🏻‍♂️

1

będę wdzięczny za podpowiedz co zmienić lub co usunąć.

Przede wszystkim stosować angielskie nazewnictwo.

0

Przeanalizuj jeszcze raz
Na szybko wydaje mi sie ze blad w tym ze dzielisz linie po "o" a w Kolo masz juz dwa o wiec zwraca ci co innego niz Kolo :)

0

To jest jakieś zadanie, że tak ma wyglądać? Jak nie to zserializuj do json i zapisz do pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1