【问题标题】:Array output? Java数组输出?爪哇
【发布时间】:2013-10-21 11:22:25
【问题描述】:

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

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]);

【问题讨论】:

标签: java arrays output


【解决方案1】:

你必须在你的类 Buch 中覆盖 toString() 方法。

根据Object#toString()的文档

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

所以

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

您只需在 Buch 类中覆盖 toString 方法。

要获得所需的输出覆盖toString() like

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());

【讨论】:

    【解决方案2】:

    您需要在您的 Buch 类中重写 toString 方法才能以漂亮的方式获得输出。

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

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

    【讨论】:

      【解决方案3】:

      重写从 Object 类继承的 toString 方法。 more info

      【讨论】:

        猜你喜欢
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        • 2017-03-06
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多