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);
}
}
}