2012-06-24 51 views
1

我創建了一個具有屬性年齡和名稱的人類。我也在對象數組中創建了5個類的實例,並希望用for循環打印出屬性。我的理解是,當您嘗試打印出一個對象時明確調用toString,所以我覆蓋toString,以便在調用對象時打印出對象的兩個屬性。在java中打印出多個對象的屬性

這裏是我的代碼:

class Person 
{ 
    int age; 
    String name; 

    public Person(String name, int age) 
    { 
     this.age = age; 
     this.name = name; 
    } 


    public String toString(Person p) 
    { 
     return "Name: " + p.name +"Age: "+ p.age; 
    } 
} 


public class P1Q5Bubble { 

public static void main(String[] args) { 

     Person [] pp = new Person [5]; 

     pp[0] = new Person("Andy" , 18); 
     pp[1] = new Person("Lisa" , 20); 
     pp[2] = new Person("Bob" , 10); 
     pp[3] = new Person("Eva" , 18); 
     pp[4] = new Person("Tim" , 13);  




     for(int i = 0; i> pp.length ; i++) 
      System.out.println(pp[i]); 
} 
+0

你的問題到底是什麼? –

回答

3

for循環終止條件是不正確,你需要i < pp.length。使用i > pp.length您的循環將不執行任何語句。只有終止條件爲true,循環纔會執行。

而且你不重寫toString正確:您toString方法不應該帶任何參數:你的實例變量nameage將提供給該功能。

0

您應該重寫默認的toString()(不帶參數),而不是添加了新的方法。所以刪除參數,使用「這個」來代替人的說法

4

您需要更改爲i > pp.lengthi < pp.length

2)toString()方法兩件事情

1)System.out.printSystem.out.println沒有按」使用沒有參數,所以把它改成類似

public String toString() { 
    return "Name: " + name + "Age: " + age; 
} 
+0

哇我覺得很蠢......謝謝! – user1229164

1

你需要在Person類中重寫的toString()函數不應該包含任何參數(s因此定義它的Object類不包含參數)。該功能的正確代碼將是

@Override public String toString() 
{ 
    return return "Name: " + name +"Age: "+ age; 
} 
相關問題