Großeltern herausfinden Java - Map?

mr.kottig

Neues Mitglied
Hallöchen. ich habe die Aufgabe bekommen in Java die Großeltern einer bestimmten Person (z.B. Kevin) herauszufinden.

Ausgangslage:
  • Claudia ist die Tochter von Paul und Maria
  • Peter ist der Sohn von John und Anne
  • Kevin ist der Sohn von Claudia und Peter
  • Jane ist die Tochter von Claudia und Peter
Nun bin ich schon mehrfach über die DS Map gestolpert, aber ich weiß nicht wie/ in welcher Form ich das konkret auf die Aufgabe anwenden soll. Irgendwelche Ratschläge?
 
G

Gelöschtes Mitglied 65838

Gast
versuch mal eine baumstruktur mit hilfe deiner personen zu erzeugen

class person
String name
String gender
List<Person> kinder
getChildren -> liefert die Liste

dann probierst du für jede Person diese Reihe aus:
1. person getChildren -> dann for each element nochmal getchildren -> falls es alles leer ist abbruch
2. in der for each nochmal getChildren -> falls für jedes getChildren leer ist -> abbruch
3. falls irgend eine Person beim zweiten Durchlauf ein Kind hat -> es muss ein Großeltern Teil sein
 

Robert Zenz

Top Contributor
versuch mal eine baumstruktur mit hilfe deiner personen zu erzeugen
Nur um kurz klugzuscheiszern: Familienbaeume sind schlecht als Trees darstellbar, es sind mehr ungerichtete Graphen.

class person
String name
String gender
List<Person> kinder
getChildren -> liefert die Liste
Gefaellt mir. Man koennte noch die Verweise auf die Eltern mit hinein nehmen beim aufbauen, dann kann man das an irgendeiner Stelle betreten, zwei Elteren hoeher gehen und hat die Groszeltern.
 

mr.kottig

Neues Mitglied
Vielen Dank für die Rückmeldung ihr Beiden!
Ich muss glaube ich muss nicht dazu sagen, dass ich noch absolut auf dem Schlauch stehe, wenn ich euch meinen bisherigen Code präsentiere..

Java:
public class Person {

    String name;
    String gender;
    List<Person> kinder;

  public Person(String name, String gender) {
        this.name = name;
        this.gender = gender;

    }
   
    public List<Person> getKinder() {
        return kinder;
    }
}

##############################

Java:
public class MainGroßeltern {

    public static void main(String[] args) {
      
        Person claudiaPerson = new Person("Claudia","female");
        Person peterPerson = new Person("Peter","male");
        Person johnPerson = new Person("John","male");
        Person annePerson = new Person("Anne","female");
        Person kevinPerson = new Person("Kevin","male");
        Person janePerson = new Person("Jane","female");

        List<Person> kinder = new ArrayList<>();
        kinder.add(claudiaPerson);
        kinder.add(peterPerson);
        kinder.add(johnPerson);
        kinder.add(annePerson);
        kinder.add(kevinPerson);
        kinder.add(janePerson);

       
        for (Person person : kinder) {
            System.out.println(person.getKinder());
        }      
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Neumi5694

Top Contributor
1. Code bitte immer mit dem Code-Tag posten
2. Schaut doch schon mal grundsätzlich nicht schlecht aus. Alerrdings wirst du nicht glücklich werden, wenn du die Beschreibung des Listenobjekts ausgeben lässt anstatt die darin enthaltenen Elemente. Person.getKinder() ist nämlich kein Text, sondern eine Liste von Person-Objekten.

Deiner Klasse "Person" fehlt noch die Information, wer die Eltern sind. D.h. so wie eine Liste der Kinder gibt es auch eine Liste der Eltern (besser noch wäre ein Set, damit du ein Kind oder ein Elternteil nicht zweimal hinzufügen kannst).

Wie wäre es, wenn du den direkten Zugriff auf die Liste durch eine Methode namens addChild(Person p) ersetzt?
Die macht dann folgendes:
Java:
void addChild(Person p) {
   this.kinder.add(p);
   p.addParent(this);
}

Edit: Huch, das hab ich ja ganz übersehen ... Du erstellst in deinem Mainprogramm ein Liste Kinder .... wozu?
(Anm: Ich geh im Folgenden davon aus, dass du den Zugriff auf die Klassenvariable Kinder durch Methoden regelst)

Du willst das Kind doch einer bestimmten Person zuweisen und keine generelle Liste von Kindern haben.
Richtig wäre

Java:
claudiaPerson.addChild(kevinPerson).
Damit wird der Kinder-Liste im claudiaPerson-Objekt das Elekent kevinPerson hinzugefügt. Und falls du meinen vorigen Vorschlag umgesetzt hast, ist dann auch Claudia ein Element von kevinPerson.getParents()

ps: Du lässt hier grundsätzlich Schreibzugriff auf die Liste von außen zu.
Java:
claudiaPerson.getChildren().add(kevinPerson);
kevinPerson.getParents().add(claudiaPerson;

würde auch funktionieren (anstatt addChild und addParent), damit hast du aber eine neue mögliche Fehlerquelle.
 
Zuletzt bearbeitet:

123neu

Bekanntes Mitglied
In Prolog wäre das irgendwie so bin mir aber nicht mehr sicher:
Code:
mutter(maria, claudia).
vater(paul, claudia).
mutter(anne, peter).
vater(john, peter).
mutter(claudia, kevin).
vater(peter, kevin).
mutter(claudia, jane).
vater(peter, jane).

eltern(X,Y,Z) :- mutter(X,Z), vater(Y,Z).
grosseltern(A,B,C,D,X) :- eltern(A,B,Y), eltern(C,D,Z), eltern(X,Y,Z).

/** <examples>

?- grosseltern(a,b,c,d,kevin).

*/
 
G

Gelöschtes Mitglied 65838

Gast
In Prolog wäre das irgendwie so bin mir aber nicht mehr sicher:
Code:
mutter(maria, claudia).
vater(paul, claudia).
mutter(anne, peter).
vater(john, peter).
mutter(claudia, kevin).
vater(peter, kevin).
mutter(claudia, jane).
vater(peter, jane).

eltern(X,Y,Z) :- mutter(X,Z), vater(Y,Z).
grosseltern(A,B,C,D,X) :- eltern(A,B,Y), eltern(C,D,Z), eltern(X,Y,Z).

/** <examples>

?- grosseltern(a,b,c,d,kevin).

*/
prolog ist nicht java.. prolog ist dafür da "alles auszuprobieren"
 
G

Gelöschtes Mitglied 65838

Gast
Was sinnvoll wäre ist bei add Children eine überprüfugn rein zu tun

wenn man eins hinzufügt -> isParent auf true setzen
wenn man ein kind weg nimmt -> schauen ob man noch eins hat wenn nein auf false

dann bei der überprüfugn nur noch das isParent durchgehen
das "getChildren" war so gedacht:

du bekommst eine liste von personen und bei allen ürofst du durch ob die auch kinder haben wenn eins davon auch ein kind hat dann kann man sagen dass es ein großeltern teil ist
 
G

Gelöschtes Mitglied 65838

Gast
Nur um kurz klugzuscheiszern: Familienbaeume sind schlecht als Trees darstellbar, es sind mehr ungerichtete Graphen.


Gefaellt mir. Man koennte noch die Verweise auf die Eltern mit hinein nehmen beim aufbauen, dann kann man das an irgendeiner Stelle betreten, zwei Elteren hoeher gehen und hat die Groszeltern.
ich wollte das "has Parent" nicht einbauen also dass man immer nur tiefer gehen kann aber niemand weis wer seine eltern sind oder ob man welche hat deswegen baum und nicht ungerichtet :D
 

123neu

Bekanntes Mitglied
prolog ist dafür da "alles auszuprobieren"
Man nennt es auch Resolution.

Hier nochmal richtig...

Code:
male(paul).
male(john).
male(peter).
male(kevin).
female(claudia).
female(anne).
female(maria).
female(jane).

parent(maria, claudia).
parent(paul, claudia).
parent(anne, peter).
parent(john, peter).
parent(claudia, kevin).
parent(peter, kevin).
parent(claudia, jane).
parent(peter, jane).

grand_parent(X, Y) :- parent(Z, X), parent(Y, Z).
omas(X, Y) :- female(Y), parent(Z, X), parent(Y, Z).
opas(X, Y) :- male(Y), parent(Z, X), parent(Y, Z).

/** <examples>
?- grand_parent(kevin, A).
?- omas(kevin, B).
?- opas(kevin, C).
*/

ausprobieren könnt ihr ihn hier: https://swish.swi-prolog.org/
 
Zuletzt bearbeitet:

123neu

Bekanntes Mitglied
Roflcopter.gif
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
Schmaxel Herausfinden ob ein Bruch kürzbar ist. Java Basics - Anfänger-Themen 6
P Herausfinden, auf welchem Panel des CardLayouts man gerade ist? Java Basics - Anfänger-Themen 12
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
T Return einer anderen Methode herausfinden Java Basics - Anfänger-Themen 9
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
WetWer Herausfinden wer Tic Tac Toe gewonnen hat Java Basics - Anfänger-Themen 4
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
Z Wie Position eines Objekts in Liste herausfinden? Java Basics - Anfänger-Themen 15
T Wie kann man den Klassentyp eines Objektes in Java herausfinden? Java Basics - Anfänger-Themen 4
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
M Windowsbenutzernamen herausfinden? Java Basics - Anfänger-Themen 6
K Vererbung Zuweisungsfehler (Kompilier- und Laufzeitfehler) herausfinden Java Basics - Anfänger-Themen 3
A 10001-te Primzahl herausfinden Java Basics - Anfänger-Themen 5
Helgon Aufgerufene URL herausfinden Java Basics - Anfänger-Themen 6
J Herausfinden der Systemfont Java Basics - Anfänger-Themen 4
S Vererbung/Herausfinden welches Objekt von welcher Klasse Java Basics - Anfänger-Themen 4
P Vererbung herausfinden welche Klasse was erbt Java Basics - Anfänger-Themen 3
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
E Gründe einer NotSerializableException herausfinden Java Basics - Anfänger-Themen 7
F Container Objekt herausfinden Java Basics - Anfänger-Themen 15
N Herausfinden ob setIcon gesetzt wurde Java Basics - Anfänger-Themen 8
R Mittelpunkt von Bounding Box herausfinden Java Basics - Anfänger-Themen 3
K Änderungsdatum einer Website herausfinden Java Basics - Anfänger-Themen 6
F Inhalt einer Variable per Code herausfinden? Java Basics - Anfänger-Themen 9
M Ordner der jar Datei herausfinden und Partent durchsuchen Java Basics - Anfänger-Themen 4
R Java Version herausfinden..? Java Basics - Anfänger-Themen 1
G Gesamten clickCount mehrerer JPanels herausfinden Java Basics - Anfänger-Themen 5
G Herausfinden, welche Componente als LETZTES focus hatte Java Basics - Anfänger-Themen 2
K itemlistener item index herausfinden Java Basics - Anfänger-Themen 4
G Position eines Objekts auf Webseite herausfinden Java Basics - Anfänger-Themen 9
Horst79 Rootverzeichnis herausfinden im Java-Applett? Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
J Methoden zu gegebenem main herausfinden Java Basics - Anfänger-Themen 22
M Rest herausfinden Java Basics - Anfänger-Themen 2
L wie den pfad zu meiner datei herausfinden? Java Basics - Anfänger-Themen 2
M Klassenpfad herausfinden Java Basics - Anfänger-Themen 4
G Verzeichnis herausfinden Java Basics - Anfänger-Themen 3
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G Applikationspfad herausfinden Java Basics - Anfänger-Themen 10
T Ordner herausfinden, aus dem das Programm aufgerufen wird Java Basics - Anfänger-Themen 5
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
A Mitte des Bildschirms herausfinden Java Basics - Anfänger-Themen 4
G Herausfinden ob Webdatei existiert Java Basics - Anfänger-Themen 4
S JFrame Location herausfinden Java Basics - Anfänger-Themen 4
D Name eines Terminals herausfinden Java Basics - Anfänger-Themen 3
M Verzeichnis der main Klasse herausfinden Java Basics - Anfänger-Themen 7
G länge einer audiodatei herausfinden Java Basics - Anfänger-Themen 3
M Herausfinden von welchem Pfad aus ein Prog gestartet wurde Java Basics - Anfänger-Themen 4
D Benutzername herausfinden Java Basics - Anfänger-Themen 5
F Root-Pfad der Java-Anwendung herausfinden Java Basics - Anfänger-Themen 1
L Wie herausfinden ob JList Elemente hinzugefügt wurden? Java Basics - Anfänger-Themen 6
G Installationsverzeichnis herausfinden Java Basics - Anfänger-Themen 4
F Arbeitstage eines Monats herausfinden Java Basics - Anfänger-Themen 22
R In ResultSet Anzahl der Zeilen herausfinden? Java Basics - Anfänger-Themen 3
J Rest einer Zahl herausfinden Java Basics - Anfänger-Themen 3
R Aktuelle URL herausfinden Java Basics - Anfänger-Themen 5
J Datum, Tage herausfinden Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben