Objekt array befüllen und ausgeben

Glyon

Neues Mitglied
Hi ich möchte ein Objekt Array erstellen und die objekte mit informationen über Studenten füllen (Name, vorname und matrikelnummer) und anschließend ausgeben. Das ist mein Ansatz, welcher auch alles abfragt aber am enden nur schrott ausgibt. Ich denke das die Informationen entweder nicht im Array gespeichert werden oder ich es falsch ausgebe. Kann mich bitte jemand erleuchten ?


Java:
public class Tub{
    public static void main(String [] args){
     
        System.out.println("Geben sie eine ganze und positive Zahl ein.");
        int m = Terminal.readInt();
     
        Student[] student = new Student[m];
     
        for(int i = 0;i<m;i++){
            student[i] = new Student();
         
            int x=i+1;
         
            System.out.println("Geben sie den Vornamen des "+x+". Studenten ein.");
            student[i].vorname = Terminal.readString ();
         
            System.out.println("Geben sie den Nachnamen des "+x+". Studenten ein.");
            student[i].nachname = Terminal.readString ();
         
            System.out.println("Geben sie die Matrikelnummer des "+x+". Studenten ein.");
            student[i].matnr = Terminal.readInt();
            }
         
            for (int j=0;j<m;j++){
                System.out.println(student[j]);
            }
    }
}

In der Klasse Student steht folgendes
Java:
public class Student{
    public static String vorname;
    public static String nachname;
    public static int matnr;
 
}
 
oder ich es falsch ausgebe
Das ist der springende Punkt. Du gibst es falsch aus. Was du mit System.out.println(obj) ausgibst ist die Adresse.
Ich würde dir empfehlen in deiner Stundentenklasse die toString() Methode zu überschreiben. Dann kannst du mittels studen[j].toString() dir die Infos ausgeben lassen.
Eine mögliche toString() Methode könnte so aussehen:

Java:
@Override
public String toString()
{
     return "Vorname: " + this.vorname + " - Nachname: " + this.nachname + " - Matrnr: + " this.matnr;
}
 
Ich denke das die Informationen entweder nicht im Array gespeichert werden oder ich es falsch ausgebe. Kann mich bitte jemand erleuchten ?
Wenn du den Rat von Robat befolgst, wird dir am Ende zwar vorname + nachname usw. ausgegeben werden, aber leider für jeden Studenten die gleichen Daten 😉

In der Klasse Student steht folgendes
Java:
public class Student{
    public static String vorname;
    public static String nachname;
    public static int matnr;

}

Wenn die Attribute "static" sind gelten diese für die Klasse und nicht für jede Instanz einzeln!
Sprich alle Objekte/Instanzen deiner Klasse Student verwenden diese Variable. Änderst du bei einer Instanz den "vorname" dann ist er bei allen geändert.
Lasse das static weg!

Dann kannst du mittels studen[j].toString() dir die Infos ausgeben lassen.
Ergänzend: Es ist nicht notwendig "toString()" explizit aufzurufen 😉
System.out.println ruft von einem Object automatisch die toString Methode auf.
 

Zurück
Oben