2016-03-18 55 views
1

所以在我的代碼中,我創建了一個名爲Pet的類,它將同時包含一個默認構造函數和一個非缺省構造函數,這個構造函數會傳遞字符串名稱以及寵物的int年齡。打印地址而不是數組元素?

public class Pet 
{ 
// instance variables 
private int age; 
private String name; 

/** 
* Constructor for objects of class Pet 
*/ 
    public Pet() 
    { 
     // initialise instance variables 
     age = 0; 
     name = "somePet"; 
    } 

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

然後創建

public class PetArray 
{ 
// instance variables 
private Pet [] petArray; 

/** 
* Constructor for objects of class PetArray 
*/ 
public PetArray() 
{ 
    // initialise instance variables 
    petArray = new Pet[5]; 
} 

public void addPets() 
{ 
    // put your code here 
    Pet myPet = new Pet(4, "Spots"); 
    petArray[0] = (myPet); 
    petArray[1] = new Pet(2, "Lucky"); 
    petArray[2] = new Pet(7, "Joe"); 
} 

public void printPets() 
{ 
    for (int i = 0; i < petArray.length; i++) 
    { 
     System.out.println(petArray[i]); 
    } 
} 

名爲petArray一類,將添加到陣列中,並打印出數組...}但後來,我得到這個終端窗口要打印出來...

寵物@ 13255e3c 寵物@ 171ac880 寵物@ 52185407 空時null

+0

它不是一個錯誤。你需要在類中重寫'toString()'。 – TheLostMind

+0

閱讀'toString'方法。你需要在你的'Pet'類中寫一個。 –

+0

@TheLostMind對不起,並不是要說錯誤。我的問題發生了變化。 – LynnLove

回答

0

您忘記重寫從Object繼承的toString()方法。

在這種情況下,你可以使用這樣的事情:

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

Java編譯器只是不知道如何打印它,你必須告訴它:)

0

在你addPets()方法你只會將3個對象添加到您的petArray中,而當您聲明該數組長度爲5時,需要填充2個空格。

您可以將數組的長度更改爲3,或者可以添加2更多的對象,應該解決你的問題。

如上所述,添加toString方法將擺脫尋址問題。

0
class Pet { 
    ... 
    @Override 
    public String toString(){ 
     // the string passed from here will be shown in console 
    } 
} 
0

根據您的代碼,您的輸出很好。您必須重寫toString()方法才能根據您的要求進行打印。添加這可能會有所幫助。

@override 
public string toString(){ 
return "your required string"; // i.e : name or name+age 
}