2015-04-26 112 views
1

我正在嘗試實踐並更好地創建對象並有效地使用它們。爲了練習,我做了一個名爲Person的類,在這個類的內部,我定義每個人都有一個名字,姓氏和年齡。我有方法允許其他類設置人的名字,姓氏和年齡,然後返回這些值。這是我卡住的地方。我希望能夠做到這一點,隨着年齡增加姓名,但保存在某個地方,以便以後我可以使用它。示例是爲學校課程製作學生名單。我希望能夠在Person類中接收並存儲數組中的特定對象或沿着這些行存儲的對象。我曾嘗試使用ArrayList完成此操作,但出於某種原因它不會正確輸出。任何幫助?謝謝!保存對象供以後使用

import java.util.ArrayList; 

public class Main { 

    public static void main(String[] args) { 

     Person definePerson; 
     String name; 
     int age; 
     ArrayList<Person> persons = new ArrayList<Person>(); 

     definePerson = new Person(); 
     System.out.print("Please Enter the first name: "); 
     name = definePerson.enterFirst(); 
     System.out.print("Please Enter the last name: "); 
     name = definePerson.enterLast(); 
     System.out.print("Please Enter their age: "); 
     age = definePerson.enterAge(); 
     persons.add(definePerson); 
     System.out.println("The Person ArrayList is: " + persons.toString()); 

    } 
} 
+0

輸出是什麼? –

+0

@AnubianNoob出來是:[Person @ 5c647e05] –

+0

@AndréFecteau你有沒有重寫'toString'方法? –

回答

3

問題是Java不知道如何將Person對象轉換爲可顯示的字符串。您必須編寫toString方法才能這樣做。

下面是一個例子:

@Override 
public String toString() { 
    return name + ": " + age + " years old."; 
} 

這種方法需要在你的個人類以便ArrayList對象知道如何顯示你的對象。

這裏的toString方法的文檔從AbstractCollection.java

返回此collection的字符串表示。字符串表示由集合元素的列表組成,它們按其迭代器返回的順序包含在方括號中(「[]」)。相鄰元素由字符「,」(逗號和空格)分隔。元素被轉換爲String.valueOf(Object)的字符串。

+0

真棒,作品謝謝!將保存該代碼以供將來參考。 –

+0

很高興能幫到你! –

3

您必須重寫Person類中的toString()方法。

Person類

class Person{ 
String name; 
int age; 

public String toString(){  
    return "person's name"+name+"person's age"+age;  
} 
+0

的toString(),謝謝!這正是它所需要的。 –

0

ArrayList.toString不會輸出在列表中的項目,你需要遍歷ArrayList中,並打印出其中所包含的元素。

+0

不是true:http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html#toString() –

+1

這樣做仍然給我輸出:Person @ 5c647e05與下面的代碼(「The Perons List is:」+ persons.get(i));我們可以通過下面的例子來說明這個問題。 \t \t}' –

+0

它會給你輸出,但它不是最好的做法。每次你必須運行循環來打印人物。 – underdog

相關問題