diff --git a/src/EinkommenInfo.java b/src/EinkommenInfo.java index 6a7d299..e2d18b3 100644 --- a/src/EinkommenInfo.java +++ b/src/EinkommenInfo.java @@ -7,23 +7,29 @@ public class EinkommenInfo { GebietsDatei datei = new GebietsDatei("Einkommen.csv"); List gebiet = datei.getGebiete(); GebietsListe gebietsListe = new GebietsListe(gebiet); - System.out.println(gebiet.size() + " Gebiete wurden eingelesen."); - System.out.println(gebietsListe.getAnzahlUnvollstaendig() + " davon haben unvollständige Angaben."); - System.out.println(); + + System.out.println(gebietsListe.getAnzahlGesamt() + " Gebiete wurden eingelesen."); + System.out.println(gebietsListe.getAnzahlUnvollstaendig() + " davon haben unvollständige Angaben.\n"); + System.out.println("Gebiet mit dem geringsten Durchschnittseinkommen:"); System.out.println(gebietsListe.getGebietMinDurchschnittEinkommen()); + + System.out.println("Gebiet mit der größten Einwohernzahl:"); + System.out.println(gebietsListe.getGebietMaxEinwohner()); + Scanner sc = new Scanner(System.in); - while(true){ + while (true) { System.out.print("Name des Gebietes: "); String input = sc.nextLine(); - if(input.isEmpty()){ + if (input.isEmpty()) { break; } List foundAreas = gebietsListe.getGebietNachNamen(input); for (Gebiet area : foundAreas) { System.out.println(area); } - System.out.println(foundAreas.size() + " Gebiete wurden gefunden."); + System.out.println(foundAreas.size() + " Gebiete wurden gefunden.\n"); } + sc.close(); } } \ No newline at end of file diff --git a/src/Gebiet.java b/src/Gebiet.java index 540d648..2f0b4da 100644 --- a/src/Gebiet.java +++ b/src/Gebiet.java @@ -1,4 +1,4 @@ -public class Gebiet implements GebietInterface{ +public class Gebiet implements GebietInterface { private int jahr; private int schlüssel; private String name; @@ -30,7 +30,7 @@ public class Gebiet implements GebietInterface{ @Override public long getGesamtEinkommen() { - if(gesamtEinkommen <= 0){ + if (gesamtEinkommen <= 0) { return -1; } return gesamtEinkommen; @@ -38,7 +38,7 @@ public class Gebiet implements GebietInterface{ @Override public int getDurchschnittsEinkommen() { - if(durchschnittsEinkommen <= 0){ + if (durchschnittsEinkommen <= 0) { return -1; } return durchschnittsEinkommen; @@ -46,11 +46,15 @@ public class Gebiet implements GebietInterface{ @Override public int getAnzahlEinwohner() { - return (int)(gesamtEinkommen / durchschnittsEinkommen); + return (int) (gesamtEinkommen * 1000 / durchschnittsEinkommen); } @Override public String toString() { - return getName() + "\n" + getAnzahlEinwohner() + " Einwohner\n" + getDurchschnittsEinkommen() + " Euro / Einwohner\n"; + if (getDurchschnittsEinkommen() <= 1 || getGesamtEinkommen() <= 1) { + return getName() + "\n" + "Einwohnerzahl unbekannt\n" + "Durchschnittseinkommen unbekannt\n"; + } + return getName() + "\n" + getAnzahlEinwohner() + " Einwohner\n" + getDurchschnittsEinkommen() + + " Euro / Einwohner\n"; } } diff --git a/src/GebietsDatei.java b/src/GebietsDatei.java index 88251c8..73978db 100644 --- a/src/GebietsDatei.java +++ b/src/GebietsDatei.java @@ -15,7 +15,9 @@ public class GebietsDatei { try { Files.readAllLines(Paths.get(dateiName)).forEach(line -> { String[] parts = line.split(";"); - gebiete.add(new Gebiet(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), parts[2], (parts[3].equals("-")) ? 0 : Long.parseLong(parts[3]), (parts[4].equals("-")) ? 0 : Integer.parseInt(parts[4]))); + gebiete.add(new Gebiet(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), parts[2], + (parts[3].equals("-")) ? -1 : Long.parseLong(parts[3]), + (parts[4].equals("-")) ? -1 : Integer.parseInt(parts[4]))); }); } catch (Exception e) { e.printStackTrace(); diff --git a/src/GebietsListe.java b/src/GebietsListe.java index 284475e..8fb9573 100644 --- a/src/GebietsListe.java +++ b/src/GebietsListe.java @@ -2,33 +2,39 @@ import java.util.ArrayList; import java.util.List; public class GebietsListe { - private List gebietListe = new ArrayList<>(); + private List gebiete = new ArrayList<>(); - public GebietsListe(List gebiete){ - this.gebietListe = gebietListe; + public GebietsListe(List gebiete) { + this.gebiete = gebiete; } - public Gebiet getGebietMinDurchschnittEinkommen(){ - - return null; + public Gebiet getGebietMinDurchschnittEinkommen() { + return gebiete.stream() + .filter(g -> g.getDurchschnittsEinkommen() != -1) + .min((g1, g2) -> g1.getDurchschnittsEinkommen() - g2.getDurchschnittsEinkommen()) + .get(); } - public Gebiet getGebietMaxEinwohner(){ - - return null; + public Gebiet getGebietMaxEinwohner() { + return gebiete.stream() + .filter(g -> g.getDurchschnittsEinkommen() != -1) + .max((g1, g2) -> g1.getAnzahlEinwohner() - g2.getAnzahlEinwohner()) + .get(); } - public int getAnzahlGesamt(){ - return 0; + public int getAnzahlGesamt() { + return gebiete.size(); } - public int getAnzahlUnvollstaendig(){ - - return 0; + public int getAnzahlUnvollstaendig() { + return (int) gebiete.stream() + .filter(g -> g.getDurchschnittsEinkommen() == -1 || g.getGesamtEinkommen() == -1) + .count(); } - public List getGebietNachNamen(String namensanfang){ - - return null; + public List getGebietNachNamen(String namensanfang) { + return gebiete.stream() + .filter(g -> g.getName().startsWith(namensanfang)) + .toList(); } }