Objekt auf der Konsole ausgeben lassen

el_niiinho13

Neues Mitglied
Hallo, ich bin neu hier und scheiter leider an einer Aufgabe die ich lösen muss. Ich möchte ein von mir erstelltes Objekt (in meinem Fall jetzt die Studenten) auf der Konsole ausgeben lassen.
Vielleicht kann mir ja jemand von euch helfen 🙂


[CODE lang="java" title="Klasse zum erstellen von Studenten"]public class Student {
String matnr;
String name;
String nachname;

public Student(String matnr, String name, String nachname) {
this.matnr = matnr;
this.name = name;
this.nachname = nachname;[/CODE]

Nun habe ich die Studenten in meiner main Methode erstellt und unten versucht diese auszugeben, jedoch wird nicht die Nummer + Name ausgegeben sondern z.B. :
Student@668bc3d5
Student@3cda1055
Student@7a5d012c
Student@3fb6a447
Student@79b4d0f
Student@6b2fad11


[CODE lang="java" title="Erstellen von Studenten"]public static void main(String[] args)
{ Student st1 = new Student("2016", "Mario" , "Strouder");
Student st2 = new Student("2017", "Daniel" , "Zeebra");
Student st3 = new Student("2018", "Nino" , "Rickert");
Student st4 = new Student("2019", "Amalia" , "Batez");
Student st5 = new Student("2020", "Alex" , "Graaf");
Student st6 = new Student("2021", "Benedict" , "Soler");


System.out.println(st1);
System.out.println(st2);
System.out.println(st3);
System.out.println(st4);
System.out.println(st5);
System.out.println(st6);
}[/CODE]

Ich wäre sehr dankbar falls mir jemand weiterhelfen könnte ! 🙂
LG
 
du printlst ja uch die referenz aus hier
Kannst du den Satz bitte noch einmal ins Deutsche übersetzen.
Du musst zuerst toString() überschreiben.
Um diese (korrekte) Antwort noch etwas genauer zu erklären:
Mit System.out.println(st1); wird intern ausgeführt: System.out.println(st1.toString());.
Es wird also die toString() Methode von Student aufgerufen; da diese in dieser Klasse nicht überschreiben ist, wird sie aus der Kalsse Object genommen. Und dort wird ein unverständlicher Code (der Hashwert oder die Adresse) ausgegeben.
Es ist also notwendig, in der Klasse Student folgenden Code zu schreiben:
Java:
public String toString() {
  // hier einen sinnvollen Text erzeugen und zurückgeben
}
 
Zuletzt bearbeitet:
Kannst du den Satz bitte noch einmal ins Deutsche übersetzen.
Die Referenz ist ein Wert der ein Objekt angibt. Das bedeutet mit der Referenz kann man das Objekt erreichen.
Falls du mit
Java:
System.out.print( student );
das Objekt auf der Konsole ausgeben willst, wird implizit die Methode
Java:
String toString()
aufgerufen. Jedes Java Objekt besitzt diese Methode( Deine Klasse Student erbt automatisch von Object).
Da du die Methode nicht überschrieben hast --> Der Standard, die Ausgabe der Referenz.
Du müsstest für die Klasse Student so etwas machen wie ..
Java:
@Override
public String toString(){
    return   matnr + ", " + name + ", " + nachname;
}
 
Du kannst natürlich auch bei der Ausgabe anstatt von
System.out.print( student ); evtl. vorhandene Getter aufrufen und direkt die Werte ausgeben, die dich interessieren, z. B.:
Java:
System.out.print("Matrikelnummer: " + student.getMatnr() );

Es ist immer sinnvoll toString() so zu überschreiben, dass es eine menschenlesbare Information über das Objekt liefert, z. B. für Debuggingzwecke.

In den meisten Fällen wird das jedoch nicht zur Ausgabe in einem Userinterface genutzt, weil es ja auch unterschiedliche Varianten der Ausgabe geben kann. Beispielsweise möchtest du einmal nur eine Liste von Matrikelnummern und dem zugehörigen Namen und in einem anderen Fall vielleicht nur eine Namensliste ausgeben oder das Format der Ausgabe soll ein anderes sein. Das kann toString() nicht leisten.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben