1

当我尝试从数组中获取输出时,我总是得到以下输出:

test1.Buch@5ef4b65d 

有人可以告诉我我做错了什么吗?

Buch[] buch = new Buch[30]; 

for(int i = 1; i < buch.length; i++) {
    buch[i] = new Buch();

    char reply;
    Scanner in = new Scanner(System.in);

    // input data into the Array            
    //.....

    System.out.println(buch[i]);
4

3 回答 3

5

您必须toString() 在您的类中覆盖该方法 Buch

根据文档Object#toString()

返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。

所以

test1.Buch@5ef4b65dBuch类的文本表示。

你只是在课堂上 ovveridetoString方法。Buch

要获得所需的输出覆盖toString() ,例如

class Buch{
    @Override
            public String toString() {
                 StringBuilder result = new StringBuilder();
                 result.append(this.name );
                 // append other properties too.
                 return result.toString();
            }
}

如果您只是打印Buch类的特定属性

System.out.println(buch[i].propertyname);

或者

  System.out.println(buch[i].getProeprtyName());
于 2013-10-21T11:23:05.217 回答
1

您需要覆盖toStringBuch 类中的方法才能以漂亮的方式获得输出。

当使用 sysout 打印对象时,将toString调用其方法。如果toString类中没有重写方法,则将使用其默认实现。对象方法的默认实现toString打印类名和对象哈希码的无符号十六进制表示,由@符号分隔。

注意:大多数 IDE 都提供了一种自动生成 toString 方法的方法。

于 2013-10-21T11:23:15.083 回答
0

重写toString从 Object 类继承的方法。更多信息

于 2013-10-21T11:27:20.697 回答