4 Stimmen

Java-Klasseninstanz (mit überschriebener ToString-Methode) gibt "adt.BinaryNode@1e24e45" aus.

Hallo, ich habe die toString() Methode in meiner eigenen Klasse überschrieben, aber irgendwie ist die Ausgabe nicht genau das, was ich wollte. Entschuldigung für die Anfängerfrage, aber ich kann nicht herausfinden, wo das Problem ist, jeder Hinweis / Hilfe wird sehr geschätzt. Vielen Dank.

Meine Klasse:

public class Country implements Comparable{
    private String name;
    private String capital;
    private int area;

    public Country(String a, String b, int c) {
        this.name = a;
        this.capital = b;
        this.area =c;
    }

    @Override
    public String toString(){
        return(this.name + " "+ this.capital+" " + this.area);
    }
}

Datenstruktur:

private void  preorder(BinaryNode    a){
      if (a != null){
       System.out.println(a.toString());
       preorder(a.left);
       preorder(a.right );
      }
} 

Anwendung:

BinarySearchTree  db = new BinarySearchTree();
    Country ob  = new Country("Rumänien", "Bukarest", 123);
    db.addNewElement(ob);
        ob  = new Country("Ungarn", "Budapest", 50);
    db.addNewElement(ob);
        ob  = new Country("Vatikanstadt", "Vatikan", 1);
    db.addNewElement(ob);
    db.printAll();

Ausgabe:

adt.BinaryNode@1e5e2c3
adt.BinaryNode@18a992f
adt.BinaryNode@4f1d0d

EDIT: Korrektur nach dem Hinweis von "chaitanya10" für den Fehler

Datenstruktur:

private void  preorder(BinaryNode    a){
      if (a != null){
       System.out.println(a.elm.toString()); // Daten im Knoten zugreifen, nicht den ganzen Knoten.
       preorder(a.left);
       preorder(a.right );
      }
}

3voto

PermGenError Punkte 45737

Ihre Methode nimmt BinaryNode als Argument entgegen, Sie rufen toString auf brinaryNode und nicht auf COuntry auf. Sie haben toString() in Country überschrieben, nicht in BinaryTree. Ändern Sie es zu

private void  preorder(Country a){
      if (a != null){
       System.out.println(a.toString());
      }
} 

ODER Überschreiben Sie toString() in BinaryNode.

2voto

Lyn Headley Punkte 10948

Sie rufen die toString-Methode von BinaryNode auf, nicht von Country

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X