toString-Methode

Heinrich500

Bekanntes Mitglied
Hallo,
ich habe folgendes Klasse Rechteck programmiert:
Java:
class Rechteck {
   
    final double hoehe;
    final double breite;
   
    Rechteck(double breite, double hoehe){
        this.breite=breite;
        this.hoehe=hoehe;
    }
   
    public  double breit(){
        return breite;
    }
    public double hoch(){
        return hoehe;
}
public double fläche(){
        return breite*hoehe;
}
  public boolean equals(Rechteck a){
        if(a.breite==breite && a.hoehe==hoehe) return true;
        else return false;
    }
}

Wenn ich jetzt eine toString-Methode schreiben will, wie mache ich das genau? Die Methode hat doch die Aufgabe hier, mein Rechteckobjekt "benutzerfreundlich" auszugeben.
D.h wenn ich mein Rechteck Objekt der print-Methode übergebe, bekomme ich eine von mir erzeugte Darstellung.
Also ich hätte folgende Idee:
Java:
public String toString(){
        return "breite" + breite + "\n" + "höhe: " + hoehe + "\n";
       
    }
Aber wie bringe zum Bsp die equals-Methode in der toString-Methode unter?
 

mihe7

Top Contributor
Weil ich es gerade sehe:
Java:
        if(a.breite==breite && a.hoehe==hoehe) return true;
        else return false;
Das ist äquivalent zu:
Java:
        return a.breite == breite && a.hoehe == hoehe;
 

Heinrich500

Bekanntes Mitglied
Weis ich nicht. Ich hätte gedacht, dass man vielleicht sowas wie "sind gleich" ausgibt statt dem true?
Kann man meine aktuelle toString-Methode noch besser machen oder ist das in Ordnung?
Achso:)
Ja das ist besser. Danke:)
 

fhoffmann

Top Contributor
Code:
public boolean equals(Rechteck a)

Diese Methode überschreibt nicht (!) die Methode equals der Klasse Objekt. Das sollte sie aber tun!
 

mihe7

Top Contributor
Ich hätte gedacht, dass man vielleicht sowas wie "sind gleich" ausgibt statt dem true?
Oh, ich denke, Du verwechselst da verschiedene Dinge miteinander.

toString soll eine String-Darstellung des betreffenden Objekts liefern. Das Objekt ist in Deinem Fall ein einziges Rechteck. Deine toString()-Methode wäre also prinzipiell in Ordnung.

Wenn Du zwei Rechteck-Objekte r1, r2 hast und r1.equals(r2) aufrufst, dann gibt das zunächst ein boolean zurück (s. Rückgabetyp von equals). Dieses wird bei der Ausgabe von Java automatisch zu Zeichenketten ("true" bzw. "false") konvertiert.

Du willst nun zwei Rechtecke miteinander vergleichen und das Ergebnis (ggf. inkl. der Rechtecke) ausgeben.

Java:
// stellt den Vergleich der beiden Rechtecke r1 und r2 als
// Zeichenkette dar
public String vergleichsDarstellung(Rechteck r1, Rechteck r2) {
    String nicht = "";
    if (r1.equals(r2)) {
        nicht = " nicht";
    }
    return "Das Rechteck\n" + r1.toString() + "und das Rechteck\n" + r2.toString() + " unterscheiden sich" + nicht + ".\n";
}
Das könntest Du jetzt für eine Ausgabe benutzen:
Java:
System.out.println(vergleichsDarstellung(r1, r2));
 

Heinrich500

Bekanntes Mitglied
Danke:)
D.h ich verwende dann meine schon geschriebene toString-Methode, um die Rechtecke zu vergleichen.
Meine toString gibt dann also nur gewisse einfache Attribute aus,während schwierigere Dinge in den Methoden dann geregelt werden?

D.h ich muss meinen Datentyp zu Rechteck ändern.
 

mihe7

Top Contributor
Java:
public class Test {
    // stellt den Vergleich der beiden Rechtecke r1 und r2 als
    // Zeichenkette dar
    public String vergleichsDarstellung(Rechteck r1, Rechteck r2) {
        String nicht = "";
        if (r1.equals(r2)) {
            nicht = " nicht";
        }
        return "Das Rechteck\n" + r1.toString() + "und das Rechteck\n" + r2.toString() + " unterscheiden sich" + nicht + ".\n";
    }

    public void run() {
        Rechteck r1 = new Rechteck(...);
        Rechteck r2 = new Rechteck(...);
        System.out.println(vergleichsDarstellung(r1, r2));
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.run();
    }
}

Hier wird einfach das bestehende Rechteck verwendet.
 

mihe7

Top Contributor
Ach so, dann habe ich Dich falsch verstanden. Dir ging es ums Überschreiben der equals-Methode? Die musst Du in Rechteck abändern:
Java:
public boolean equals(Object o){
    if (o == null || o == this || !(o instanceof Rechteck)) {
        return o == this;
    }
    Rechteck a = (Rechteck) o;
    return a.breite==breite && a.hoehe==hoehe;
}
 

Heinrich500

Bekanntes Mitglied
Achso jetzt verstehe ich es.

Mein Code nochmal:

Java:
lass Rechteck {
 
    final double hoehe;
    final double breite;
 
    Rechteck(double breite, double hoehe){
        this.breite=breite;
        this.hoehe=hoehe;
    }
 
    public  double breit(){
        return breite;
    }
    public double hoch(){
        return hoehe;
}
public double fläche(){
        return breite*hoehe;
}
 
public boolean equals(Object o){
    if (o == null || o == this || !(o instanceof Rechteck)) {
        return o == this;
    }
    Rechteck a = (Rechteck) o;
    return a.breite==breite && a.hoehe==hoehe;
}
}
public String toString(){
        return "breite" + breite + "\n" + "höhe: " + hoehe + "\n";
}
     
    }

Ich bin 19 und lerne seit diesem Semester Java als einführende Programmiersprache.
 
X

Xyz1

Gast
19 Tage? :D

aufe Schnelle kann ich oben keine Semantischen dafür aber viele (einfache) syntaktische Fehler erkennen.
 

Heinrich500

Bekanntes Mitglied
Ich habe das nur zusammenkopiert. Wsl habe ich Klammern vergessen usw. :)
Mir ging es um die Semantik. Vor allem, dass man in der toString Methode einfach nur die offensichtlichen Attribute ausgibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
J toString() Methode und ArrayList Java Basics - Anfänger-Themen 1
H Erste Schritte Arrayes.toString methode funktioniert nicht Java Basics - Anfänger-Themen 2
A Problem mit toString Methode Java Basics - Anfänger-Themen 8
T String toString methode nicht vererbt ... Java Basics - Anfänger-Themen 4
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
B Methoden toString Methode mit Schlüsselwort new Java Basics - Anfänger-Themen 3
L toString()-Methode in verschieden Klassen Java Basics - Anfänger-Themen 3
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
F toString Methode ausgeben Java Basics - Anfänger-Themen 3
S toString-Methode für Map Java Basics - Anfänger-Themen 15
L OOP hilfe bei tostring methode Java Basics - Anfänger-Themen 6
D Frage zum Aufruf einer toString-Methode Java Basics - Anfänger-Themen 2
V toString()-Methode Java Basics - Anfänger-Themen 9
S PrintWriter-Probleme mit toString Methode->Person@17182c1 Java Basics - Anfänger-Themen 10
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W ArrayList und toString Java Basics - Anfänger-Themen 17
W toString bei composition Java Basics - Anfänger-Themen 4
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
M Polymorphie toString Java Basics - Anfänger-Themen 13
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
P falscher booleanwert bei toString Java Basics - Anfänger-Themen 4
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
E Vererbung mit toString() Java Basics - Anfänger-Themen 6
O Referenz - toString Java Basics - Anfänger-Themen 9
B toString mit optionaler Ausgabe überrschreiben Java Basics - Anfänger-Themen 5
C Methoden toString Java Basics - Anfänger-Themen 4
B toString() Dilemma Java Basics - Anfänger-Themen 7
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
K array in toString des objektes ausgeben Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K toString() Java Basics - Anfänger-Themen 1
I Vererbung toString() Frage Java Basics - Anfänger-Themen 5
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
A JList / toString modify Java Basics - Anfänger-Themen 2
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
M toString Java Basics - Anfänger-Themen 7
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
N .toString() und (string) Java Basics - Anfänger-Themen 2
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
N Matrix an toString Java Basics - Anfänger-Themen 7
A Werteausgabe des Construktors mit toString Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Stringarray toString Java Basics - Anfänger-Themen 5
S Escape Sequenz in der toString() ? Java Basics - Anfänger-Themen 4
A Arrays.asList(s).toString() ohne [] und , Java Basics - Anfänger-Themen 3
P toString Java Basics - Anfänger-Themen 4
M .toString(); // Ausgabe: Attribut von Vaterklasse Java Basics - Anfänger-Themen 12
K toString Java Basics - Anfänger-Themen 10
A Object -> String mit valueOf, toString oder cast ? Java Basics - Anfänger-Themen 6
R getClass und getName sowie toString Java Basics - Anfänger-Themen 10
D Arrays.toString problem Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
H toString / println Java Basics - Anfänger-Themen 2
H toString() erben? Java Basics - Anfänger-Themen 3
A Arrays.toString() ohne [ und ] Java Basics - Anfänger-Themen 2
K Arrays.toString(); funktioniert nicht Java Basics - Anfänger-Themen 4
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G toString Problem Java Basics - Anfänger-Themen 12
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
T Warum Fehlermeldung bei diesem ToString Programm? Java Basics - Anfänger-Themen 2
B toString Java Basics - Anfänger-Themen 5
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
G Probleme bei toString Überschreibung Java Basics - Anfänger-Themen 6
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
T keine Ausgabe von toString obwohl keine Fehlermeldung Java Basics - Anfänger-Themen 5
D ToString Java Basics - Anfänger-Themen 3
C Bedeutung von toString im Bezug auf Text Java Basics - Anfänger-Themen 4
N char[] aus JPasswordField toString() Java Basics - Anfänger-Themen 6
T Boolean toString ? Java Basics - Anfänger-Themen 3
H toString(); varargs; bitSet Java Basics - Anfänger-Themen 8
M getClass() und getClass().toString() Java Basics - Anfänger-Themen 4
P Vektor toString? Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
G Frage zur toString ? Java Basics - Anfänger-Themen 4
L .toString wieder rückgängig machen Java Basics - Anfänger-Themen 7
H Was ist toString ??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben