2014-03-03 94 views
2

我的任務是爲ArrayList中的每個對象創建一個toString()方法。我不知道如何去做這件事。這與ArrayList如何爲對象的ArrayList創建toString方法?

public class DogManager { 
    private ArrayList<Dog> dogList; 

    public DogManager() { 
     this.dogList = new ArrayList<Dog>(); 
    } 

    public void addDog(String nameOfDog) { 
     this.dogList.add(new Dog(nameOfDog)); 
    } 

    public String toString() { 
     String results = "+"; 
     for (int i = 0; i < this.dogList.size(); i++) { 
      results += " " + this.dogList.get(i); 
     } 
     return results; 
    } 
} 

我知道toString()是錯誤的類,但我無法弄清楚如何使每個在列表中的對象的返回說明。

+0

爲(狗狗:this.dogList){ 結果+ = dog.toString() } ?這是,你在尋找什麼? 我假設Dog有一個由你實現的toString函數。 – creativeby

+0

是的,我已經在Dog類中做了一個toString方法。謝謝! – user3241721

回答

3

你就近了。我能想到的最簡單的方法是對Dog也執行toString()。然後在您的DogManager課程中,您可以遍歷每個Dog並調用其toString()

即:

public String toString() { 
    String results = "+"; 
    for(Dog d : dogList) { 
     results += d.toString(); //if you implement toString() for Dog then it will be added here 
    } 
    return results; 
    } 
} 

編輯:您也可以格式化你喜歡的。我注意到一些答案由分隔每個狗「」

+0

謝謝你!到目前爲止,我已經理解了我所學過的所有東西,但總是在ArrayList上畫空白。 – user3241721

+0

@ user3241721沒問題。對於ArrayList,只要記住它包含多個值。你的直覺是正確的,你需要循環一切。你只需要再次實現'toString'。如果這有幫助,那麼你可以將其標記爲已接受。 –

+0

當然,再次感謝。 – user3241721

0
public String toString(){ 
    String toReturn = "["; 

    for(Dog currentDog: dogList){ 
     toReturn+=currentDog.toString()+","; 
    } 
    toReturn = toReturn.substring(0,toReturn.length()-1); 

    return toReturn+"]"; 
} 
0
public String toString() { 
    String results = ""; 
    for(Dog d : dogList) { 
     results += "," + d.toString(); 
    } 
    return results; 
    } 
} 
0

一個ArrayList是填充有對象動態數組。爲什麼不重寫Dog類中的toString方法。

0

您需要在您的Dog類中定義的方法.toString(),使其覆蓋Object類的默認.toString()方法。

public class Dog { 

String name; 
String age; 
String race; 

@Override 
public String toString() { 

    return String.format("Name: %s, Age: %s, Race: %s", name, age, race); 
} 
} 

然後,你可以簡單地調用System.out.println(dog)對數組的每個元素和狗的.toString()方法定義了你的自定義文本將被顯示。

0

我會這樣做,不需要循環通過狗列表(List.toString已經爲你做了這個)。

public class Dog { 
    private String name; 

    @Override 
    public String toString() { 
     return "Dog{" + name + "}"; 
    } 
} 


public class DogManager { 
    private List<Dog> dogs; 

    @Override 
    public String toString() { 
     return "DogManager{dogs=" + dogs + "}"; 
    } 
} 
相關問題