0

我正在尝试打印我添加到数组列表中的所有元素,但它只打印地址而不是字符串。
有人可以帮助我或给出一些提示吗?我整个下午都在找

4

6 回答 6

3

您需要覆盖 Autuer 的 toString 方法以 String 格式返回其内容

于 2013-04-16T17:13:14.197 回答
1

You can also, use a foreach to do it ;)

for(Auteur a: auteurs){
    System.out.print(a.getName() + " - " + a.getNumber());
}
于 2013-04-16T17:15:22.830 回答
0

itr.next()返回Auteur而不是的对象String。要打印名称,您需要键入 cast 它,Auteur如果您有该类的打印方法,则打印它Auteur

Auteur aut = (Auteur) itr.next();
System.out.println(aut.printMethod());
于 2013-04-16T18:04:33.127 回答
0

Every object in Java inherits

public String toString();

from java.lang.Object

in your Auteur class you need to write some code similar to the following:

.... ....

@Override
public String toString() {
    return "Name: "+this.name;
}
于 2013-04-16T17:16:57.573 回答
0

Try defining the toString() method in your Auter class as follows:

public String toString() {
    return this.getName() + " - " + this.getNumber());
}

and your code will do what you wish. System.out.println calls the argument's toString() method and prints that out to the Output console.

于 2013-04-16T17:18:07.947 回答
0

您所看到的称为对象的默认toString。它是它所属的类的 FQCN(完全限定的类名)和对象的 hashCode 的合并。

引用 toString 的 JavaDoc:

Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符“@”和对象的哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

我们可以覆盖toString以提供更易于阅读的输出。看看下面的两个类,有和没有toString。尝试执行 main 方法并比较两个打印语句的输出。

class Person {
    private String name;

    @Override
    public String toString() {
        return "Person [name=" + this.name + "]";
    }
}

class Address {
    private String town;
}

public class Test {
    public static void main(String... args) {
        Person person = new Person();
        Address address = new Address();

        System.out.println("Person is : " + person);
        System.out.println("Address is : " + address);
    }
}
于 2013-04-18T16:09:47.713 回答