2013-04-16 55 views
0

我試圖打印所有添加到我的數組列表中的元素,但它僅打印地址而不是字符串。
有人可以幫我或給出一些提示嗎?我整個下午都在如何打印ArrayList中的所有元素?

+7

您需要在您的Auteur類中重寫'toString()'方法。如果你已經顯示了你的Auteur類,我們可以給它的樣例toString。 –

+0

怎麼樣? ArrayList :: toString在[] rit中返回此集合的字符串表示形式? http://docs.oracle.com/javase/6/docs/api/java/util/AbstractCollection.html#toString() –

回答

3

你需要重寫Autuer的toString方法以String格式返回其內容的搜索

1

你也可以使用一個foreach做到這一點;)

for(Auteur a: auteurs){ 
    System.out.print(a.getName() + " - " + a.getNumber()); 
} 
0

每個對象在Java中繼承

public String toString(); 

java.lang.Object

Auteur類,你需要寫類似下面的一些代碼:

.... ....

@Override 
public String toString() { 
    return "Name: "+this.name; 
} 
0

嘗試定義您的AutertoString()方法如下:

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

和你的代碼會做你想做的。 System.out.println調用參數的方法toString()並將其輸出到輸出控制檯。

0

itr.next()返回Auteur的對象而不是String。要打印名稱,您需要輸入Auteur,然後打印它,如果您有類Auteur的打印方法。

Auteur aut = (Auteur) itr.next(); 
System.out.println(aut.printMethod()); 
0

您看到的內容稱爲對象的默認toString。它是它所屬類的FQCN(完全限定類名)和對象的hashCode的合併。

從的toString的JavaDoc引用:

Object類的toString方法返回由 其中物體是一個實例,所述-SIGN 字符`的類的名稱的字符串@ ',以及對象代碼的哈希 的無符號十六進制表示。換句話說,此方法返回一個字符串等於 到的值:

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

我們可以覆蓋toString給出更人類可讀輸出。看看下面的兩個課程,有沒有toString。嘗試執行主方法並比較兩個打印語句的輸出。

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