Hinzufügen eines Objekts in eine Liste, um später dann nochmal auf das Objekt zugreifen zu können

JuriW

Aktives Mitglied
Hallo zusammen,

mir kommts so vor, als würde ich den Wald vor lauter Bäumen nicht mehr sehen können.

Ich habe eine Studentenverwaltung, und die Aufgabenstellung definiert zum Schluss einen Manager, der Studenten einer Liste mit Studenten hinzufügen kann.

Java:
public class Campusmanager {

private static LinkedList<Student> studenten = new LinkedList<>();

private void studentEinfügen(String vorname, String nachname, int matrikelnummer, Studiengang stdg) {

studenten.add(new Student(vorname, nachname, matrikelnummer, stdg));
}

Ich habe bereits eine Klasse Student, die Vorname, Nachname, Matrikelnummer, einen Studiengang, der in einem enum gespeichert ist, eine Liste mit geschriebenen Prüfungen und eine toString()-Methode besitzt. Desweiteren kann ich mit ihr Prüfungen hinzufügen und den Durchschnitt aller Noten berechnen.
Java:
public class Student {

private String vorname;
private String nachname;
private int matrikelnummer;
private Studiengang stdg;
private LinkedList<Prüfung> prüfungen = new LinkedList<>();

public Student(String vorname, String nachname, int matrikelnummer, Studiengang stdg) {
//this. …
}


public void prüfungHinzufügen(Modul m, Note n) {
prüfungen.add(new Prüfung(m,n));
}

public String durchschnittsnote(LinkedList<Prüfung> prüfungen) {
//...
}

public String toString() {
//...
}

Ich habe nun das Problem, dass ich die Studenten, die ich mit

Java:
Student s1 = new Student ("Fritz", "Egon", 234234, Studiengang.MT);

erstellen könnte, nicht der Liste hinzufügen kann, weil der Studentendatentyp ja leider nicht für meine Methode studentEinfügen gilt … Deswegen mach ich das so

Java:
        studVerwaltung.studentEinfügen("Fritz", "Egon", 234234, Studiengang.MT);

Es wird ja ein neues Objekt erstellt, sobald ich einen Student einfüge, oder? Wie kann ich auf das zugreifen um zum Beispiel eine Prüfung hinzuzufügen?
Java:
s1.prüfungHinzufügen(Modul.MATH, Note.N2_0);
Oder gibt es eine Möglichkeit den mit new erstellen Student mit der Methode studentEinfügen (die ich laut Aufgabenstellung schreiben muss) hinzufügen?
Also, damit das so aussieht? (Was mir aber gerade einen Compilerfehler rausspuckt, das die Methode ja (String, String, int, Studiengang) verlangt und nicht (Student))
Java:
        studVerwaltung.studentEinfügen(s1);


Vielen Dank und schöne Grüße
Juri
 
Hallo,
du kannst den Schüler s1 hinzufügen, indem du den Parameter in Student umänderst und den dann direkt zur Liste hinzufügst:
Code:
private void studentEinfügen(Student student) {
studenten.add(student);
}
 
Oh man, ich fühl mich gerade so dumm ...Vielen, vielen Dank!
Kannst du mir bitte noch erklären, wann ich "new" brauche, wenn ich etwas in eine Liste einfügen will?
 
Ach, wenn ich das Objekt noch nicht erstellt habe. Wie gesagt, ich seh den Wald vor lauter Bäumen gerade nicht mehr! Vielen Dank!
 
Du kannst auch beide Methoden gleichzeitig haben:
Java:
void studentEinfügen(String vorname, String nachname, int matrikelnummer, Studiengang stdg) {
    studenten.add(new Student(vorname, nachname, matrikelnummer, stdg));
}

void studentEinfügen(Student student) {
    studenten.add(student);
}
 
Du kannst auch beide Methoden gleichzeitig haben:
Java:
void studentEinfügen(String vorname, String nachname, int matrikelnummer, Studiengang stdg) {
    studenten.add(new Student(vorname, nachname, matrikelnummer, stdg));
}

void studentEinfügen(Student student) {
    studenten.add(student);
}

Kannst du mir dann sagen, wie ich, wenn ich die erste Methode nutze, auf den neu erstellten Student zugreifen, so dass er Methoden in der Klasse Student benutzen kann?
In diesem Fall
Code:
Student s1 = new Student ("Fritz", "Egon", 234234, Studiengang.MT);
kann ich ja mit s1 und Punktoperator zum Beispiel eine Methode aufrufen.
Wie mache ich das mit der ersten Variante? Ich benenne das Objekt ja nicht, oder?

Viele Grüße
 

Neue Themen


Zurück
Oben