ich glaube der save ist okay, nur im loader habe ich mühe mit der liste?
die drei ... bedeuten doch dass der name zuerst kommt, also muss ich der liste direkt beides zufügen? nur der konstructor verlangt ja auch den namen? kann mir jemand weiter helfen?
package de.codegym.task.task20.task2001;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
Lesen und Schreiben in eine Datei: Human
*/
public class Solution {
public static void main(String[] args) {
// Aktualisiere die an die createTempFile-Methode übergebene Zeichenkette basierend auf dem Pfad zu einer Datei auf der Festplatte
try {
File yourFile = File.createTempFile("dein_dateiname", null);
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
Human smith = new Human("Smith", new Asset("Haus", 999_999.99), new Asset("Auto", 2999.99));
smith.save(outputStream);
outputStream.flush();
Human somePerson = new Human();
somePerson.load(inputStream);
inputStream.close();
// Überprüfe, ob smith gleich somePerson ist
System.out.println(smith.equals(somePerson));
inputStream.close();
} catch (IOException e) {
// e.printStackTrace();
System.out.println("Hoppla, mit meiner Datei stimmt etwas nicht");
} catch (Exception e) {
// e.printStackTrace();
System.out.println("Hoppla, mit der Speicher-/Lademethode stimmt etwas nicht");
}
}
public static class Human {
public String name;
public List<Asset> assets = new ArrayList<>();
public Human() {
}
public Human(String name, Asset... assets) {
this.name = name;
if (assets != null) {
this.assets.addAll(Arrays.asList(assets));
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Human human = (Human) o;
if (name != null ? !name.equals(human.name) : human.name != null) return false;
return assets != null ? assets.equals(human.assets) : human.assets == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (assets != null ? assets.hashCode() : 0);
return result;
}
public void save(OutputStream outputStream) throws Exception {
// Implementiere diese Methode
PrintWriter pw = new PrintWriter(outputStream);
String nameExist = name != null ? "ja" : "nein";
pw.println(nameExist);
if(this.assets.size() > 0){
for(Asset current : this.assets){
pw.println(current.getName());
pw.println(current.getPrice());
pw.flush();
}
}
pw.close();
}
public void load(InputStream inputStream) throws Exception {
// Implementiere diese Methode
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String nameExist = reader.readLine();
if(nameExist.equals("ja")){
for(Asset current : assets){
String name = reader.readLine();
double price = Double.parseDouble(reader.readLine());
this.assets.add(price);
Human human = new Human(name, this.assets);
}
}
reader.close();
}
}
}