4

toString()こんにちは私は自分のクラスのメソッドをオーバーライドしましたが、どういうわけか出力は私が望んでいたものではありません。初心者の質問で申し訳ありませんが、問題がどこにあるのかわかりません。ヒントやヘルプをいただければ幸いです。ありがとうございました。

私のクラス:

public class Country implements Comparable<Country>{
    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);
    }
}

DS:

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

アプリ:

BinarySearchTree <Country> db = new BinarySearchTree<Country>();
    Country ob  = new Country("Romania", "Buc", 123);
    db.addNewElement(ob);
        ob  = new Country("Hungaria", "Bud", 50);
    db.addNewElement(ob);
        ob  = new Country("Vatican", "Vat", 1);
    db.addNewElement(ob);
    db.printAll();

出力:

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

編集:msitakeの「chaitanya10」ヒントの後の修正

DS:

private void  preorder(BinaryNode  <type>  a){
      if (a != null){
       System.out.println(a.elm.toString()); // ACCES the data in node not the hole node.
       preorder(a.left);
       preorder(a.right );
      }
} 
4

2 に答える 2

3

あなたのメソッドはBinaryNode<type>として取ります、あなたはではなくargument呼び出しtoStringています。あなたは持っていません。に変更しますbrinaryNode<type>COuntryoverriden toString()CountryBinaryTree

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

      }
} 

または override toString() in BinaryNode

于 2012-10-30T23:28:25.107 に答える
2

国ではなく、BinaryNodeのtoStringメソッドを呼び出しています

于 2012-10-30T23:28:17.727 に答える