Compare commits

29 Commits

Author SHA1 Message Date
d8bd33e6d1 Merge remote-tracking branch 'origin/master' 2022-12-09 14:19:02 +01:00
3c28114bd5 fixed interface implementation 2022-12-09 14:18:16 +01:00
Johannes Kantz
998d8aefd7 add: Readme mit Teilnehmerliste 2022-12-09 14:18:06 +01:00
Johannes Kantz
f85e17a726 add: GebietsDateiInterface 2022-12-09 14:10:55 +01:00
3f42a3aca5 Merge pull request '42' (#13) from fix/all into master
Reviewed-on: #13
2022-12-09 14:00:38 +01:00
Johannes Kantz
e1a7f69bc7 fix: everything 2022-12-09 11:21:35 +01:00
90a323ce01 Merge pull request 'fix/gebietsdatei' (#11) from fix/gebietsdatei into master
Reviewed-on: #11
2022-12-06 14:57:54 +01:00
0643732d08 main 2022-12-06 14:45:42 +01:00
7ca888121d fixed Constructor 2022-12-06 14:45:25 +01:00
da5bcc93bf toString 2022-12-06 14:44:53 +01:00
Johannes Kantz
81b4cbeb7e fix: remove print 2022-12-06 14:38:30 +01:00
Johannes Kantz
aab1fe68d7 fix: formatting 2022-12-06 14:38:03 +01:00
Johannes Kantz
8382a47d7e fix: meine dummen fehler (: 2022-12-06 14:37:34 +01:00
daf0ec541d getAnzahlEinwohner implementiert 2022-12-06 14:22:27 +01:00
268f4eee43 renamed Main to EinkommenInfo 2022-12-06 14:01:59 +01:00
a2bd838467 Gebiet 2022-12-06 13:54:40 +01:00
78dfa848fa Merge pull request 'Add: GebietsDatei fixed #6' (#8) from readfile into master
Reviewed-on: #8
2022-12-02 15:13:55 +01:00
pbs2h21asc
2562126caa Gebietliste 2022-12-02 15:10:14 +01:00
9c6592fbff GebietsListe Methoden 2022-12-02 15:07:08 +01:00
Johannes Kantz
a1827ac6a4 Add: GebietsDatei 2022-12-02 15:05:25 +01:00
f9bc2db7bb Gebiet 2022-12-02 15:01:35 +01:00
044d274da5 Gebiet 2022-12-02 14:59:11 +01:00
6fb0c50f62 GebietsListe 2022-12-02 14:54:14 +01:00
8fd4bc6d32 Merge pull request 'beta' (#5) from beta into master
Reviewed-on: #5
2022-12-02 14:47:35 +01:00
57d88900ce Merge pull request 'master' (#4) from master into beta
Reviewed-on: #4
2022-12-02 14:41:49 +01:00
266c4b2b4d GebietMock 2022-12-02 14:38:10 +01:00
9c14f86b00 Merge pull request 'beta' (#3) from beta into master
Reviewed-on: #3
2022-12-02 14:35:43 +01:00
f5ebd6469b GebietInterface 2022-12-02 14:33:49 +01:00
1f53698bc7 GebietInterface 2022-12-02 14:33:21 +01:00
12 changed files with 242 additions and 7 deletions

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -1,5 +1,3 @@
Jahr;Schlüssel;Region;verfügbares Einkommen der privaten Haushalte;verfüg. Einkommen der priv. Haushalte je Einwohner
;;;Tsd. EUR;EUR
2016;01001;Flensburg, Kreisfreie Stadt;1602046;18481 2016;01001;Flensburg, Kreisfreie Stadt;1602046;18481
2016;01002;Kiel, Landeshauptstadt, Kreisfreie Stadt;4643584;18810 2016;01002;Kiel, Landeshauptstadt, Kreisfreie Stadt;4643584;18810
2016;01003;Lübeck, Hansestadt, Kreisfreie Stadt;4237638;19575 2016;01003;Lübeck, Hansestadt, Kreisfreie Stadt;4237638;19575
1 Jahr 2016 Schlüssel 01001 Region Flensburg, Kreisfreie Stadt verfügbares Einkommen der privaten Haushalte 1602046 verfüg. Einkommen der priv. Haushalte je Einwohner 18481
Jahr Schlüssel Region verfügbares Einkommen der privaten Haushalte verfüg. Einkommen der priv. Haushalte je Einwohner
Tsd. EUR EUR
1 2016 01001 01001 Flensburg, Kreisfreie Stadt Flensburg, Kreisfreie Stadt 1602046 1602046 18481 18481
2 2016 01002 01002 Kiel, Landeshauptstadt, Kreisfreie Stadt Kiel, Landeshauptstadt, Kreisfreie Stadt 4643584 4643584 18810 18810
3 2016 01003 01003 Lübeck, Hansestadt, Kreisfreie Stadt Lübeck, Hansestadt, Kreisfreie Stadt 4237638 4237638 19575 19575

13
README.md Normal file
View File

@@ -0,0 +1,13 @@
# G91_Einkommen
Entwickeln Sie ein Java Programm zur Anzeige des gebietsabhängigen Durchschnittseinkommens von Bundesbürgern auf der Konsole.
## Beteiligte
- Jan-Philipp Schulte
- Malte Schulze Hobeling
- Reshad Meher
- Richard Reiswich
- Johannes Kantz
[GitTea Repo](https://git.bib.de/Homeoffice/passivesEinkommen)

35
src/EinkommenInfo.java Normal file
View File

@@ -0,0 +1,35 @@
import java.util.List;
import java.util.Scanner;
public class EinkommenInfo {
public static void main(String[] args) {
System.out.println("Übersicht über Bevölkerungszahl und Einkommen in Deutschland");
GebietsDatei datei = new GebietsDatei("Einkommen.csv");
List<Gebiet> gebiet = datei.getGebiete();
GebietsListe gebietsListe = new GebietsListe(gebiet);
System.out.println(gebietsListe.getAnzahlGesamt() + " Gebiete wurden eingelesen.");
System.out.println(gebietsListe.getAnzahlUnvollständig() + " davon haben unvollständige Angaben.\n");
System.out.println("Gebiet mit dem geringsten Durchschnittseinkommen:");
System.out.println(gebietsListe.getGebietMinDurchschnittsEinkommen());
System.out.println("Gebiet mit der größten Einwohernzahl:");
System.out.println(gebietsListe.getGebietMaxAnzahlEinwohner());
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Name des Gebietes: ");
String input = sc.nextLine();
if (input.isEmpty()) {
break;
}
List<Gebiet> foundAreas = gebietsListe.getGebieteNachNamen(input);
for (Gebiet area : foundAreas) {
System.out.println(area);
}
System.out.println(foundAreas.size() + " Gebiete wurden gefunden.\n");
}
sc.close();
}
}

View File

@@ -0,0 +1,5 @@
import java.util.ArrayList;
public interface GebiesDateiInterface {
ArrayList<Gebiet> getGebiete();
}

60
src/Gebiet.java Normal file
View File

@@ -0,0 +1,60 @@
public class Gebiet implements GebietInterface {
private int jahr;
private int schlüssel;
private String name;
private long gesamtEinkommen;
private int durchschnittsEinkommen;
public Gebiet(int jahr, int schlüssel, String name, long gesamtEinkommen, int durchschnittsEinkommen) {
this.jahr = jahr;
this.schlüssel = schlüssel;
this.name = name;
this.gesamtEinkommen = gesamtEinkommen;
this.durchschnittsEinkommen = durchschnittsEinkommen;
}
@Override
public int getJahr() {
return jahr;
}
@Override
public int getSchlüssel() {
return schlüssel;
}
@Override
public String getName() {
return name;
}
@Override
public long getGesamtEinkommen() {
if (gesamtEinkommen <= 0) {
return -1;
}
return gesamtEinkommen;
}
@Override
public int getDurchschnittsEinkommen() {
if (durchschnittsEinkommen <= 0) {
return -1;
}
return durchschnittsEinkommen;
}
@Override
public int getAnzahlEinwohner() {
return (int) (gesamtEinkommen * 1000 / durchschnittsEinkommen);
}
@Override
public String toString() {
if (getDurchschnittsEinkommen() <= 1 || getGesamtEinkommen() <= 1) {
return getName() + "\n" + "Einwohnerzahl unbekannt\n" + "Durchschnittseinkommen unbekannt\n";
}
return getName() + "\n" + getAnzahlEinwohner() + " Einwohner\n" + getDurchschnittsEinkommen()
+ " Euro / Einwohner\n";
}
}

8
src/GebietInterface.java Normal file
View File

@@ -0,0 +1,8 @@
public interface GebietInterface {
int getJahr();
int getSchlüssel();
String getName();
long getGesamtEinkommen();
int getDurchschnittsEinkommen();
int getAnzahlEinwohner();
}

39
src/GebietMock.java Normal file
View File

@@ -0,0 +1,39 @@
public class GebietMock implements GebietInterface{
public GebietMock() {
}
@Override
public int getJahr() {
return 0;
}
@Override
public int getSchlüssel() {
return 0;
}
@Override
public String getName() {
return null;
}
@Override
public long getGesamtEinkommen() {
return 0;
}
@Override
public int getDurchschnittsEinkommen() {
return 0;
}
@Override
public int getAnzahlEinwohner() {
return 0;
}
@Override
public String toString() {
return "GebietMock{}";
}
}

27
src/GebietsDatei.java Normal file
View File

@@ -0,0 +1,27 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
public class GebietsDatei implements GebiesDateiInterface {
private String dateiName;
public GebietsDatei(String dateiName) {
this.dateiName = dateiName;
}
public ArrayList<Gebiet> getGebiete() {
ArrayList<Gebiet> gebiete = new ArrayList<>();
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("-")) ? -1 : Long.parseLong(parts[3]),
(parts[4].equals("-")) ? -1 : Integer.parseInt(parts[4])));
});
} catch (Exception e) {
e.printStackTrace();
}
return gebiete;
}
}

40
src/GebietsListe.java Normal file
View File

@@ -0,0 +1,40 @@
import java.util.ArrayList;
import java.util.List;
public class GebietsListe implements GebietsListeInterface{
private List<Gebiet> gebiete = new ArrayList<>();
public GebietsListe(List<Gebiet> gebiete) {
this.gebiete = gebiete;
}
public Gebiet getGebietMinDurchschnittsEinkommen() {
return gebiete.stream()
.filter(g -> g.getDurchschnittsEinkommen() != -1)
.min((g1, g2) -> g1.getDurchschnittsEinkommen() - g2.getDurchschnittsEinkommen())
.get();
}
public Gebiet getGebietMaxAnzahlEinwohner() {
return gebiete.stream()
.filter(g -> g.getDurchschnittsEinkommen() != -1)
.max((g1, g2) -> g1.getAnzahlEinwohner() - g2.getAnzahlEinwohner())
.get();
}
public int getAnzahlGesamt() {
return gebiete.size();
}
public int getAnzahlUnvollständig() {
return (int) gebiete.stream()
.filter(g -> g.getDurchschnittsEinkommen() == -1 || g.getGesamtEinkommen() == -1)
.count();
}
public List<Gebiet> getGebieteNachNamen(String namensanfang) {
return gebiete.stream()
.filter(g -> g.getName().startsWith(namensanfang))
.toList();
}
}

View File

@@ -0,0 +1,9 @@
import java.util.List;
public interface GebietsListeInterface {
Gebiet getGebietMinDurchschnittsEinkommen();
Gebiet getGebietMaxAnzahlEinwohner();
int getAnzahlGesamt();
int getAnzahlUnvollständig();
List<Gebiet> getGebieteNachNamen(String namensanfang);
}

View File

@@ -1,5 +0,0 @@
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}