# Objekt array befüllen und ausgeben



## Glyon (4. Dez 2016)

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 ?



```
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

```
public class Student{
    public static String vorname;
    public static String nachname;
    public static int matnr;
 
}
```


----------



## Robat (4. Dez 2016)

Glyon hat gesagt.:


> 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:


```
@Override
public String toString()
{
     return "Vorname: " + this.vorname + " - Nachname: " + this.nachname + " - Matrnr: + " this.matnr;
}
```


----------



## Joose (5. Dez 2016)

Glyon hat gesagt.:


> 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 



Glyon hat gesagt.:


> In der Klasse Student steht folgendes
> 
> ```
> public class Student{
> ...



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!



Robat hat gesagt.:


> 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.


----------



## Robat (5. Dez 2016)

@Joose 
Hab gar nicht gesehen, dass die Attribute als static deklariert sind 



Joose hat gesagt.:


> Es ist nicht notwendig "toString()" explizit aufzurufen


Wieder was neues gelernt


----------

