打印地址而不是数组元素?

时间:2016-03-18 05:46:54

标签: java bluej

所以在我的代码中,我创建了一个名为Pet的类,它将同时具有默认构造函数和传递String名称的非默认构造函数以及宠物的int age。

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

然后我创建了一个名为petArray的类,它将添加到数组并打印出数组......

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

}

但是,当我尝试将其打印出来时,我会在终端窗口中看到它......

宠物@ 13255e3c 宠物@ 171ac880 宠物@ 52185407 空值 空

4 个答案:

答案 0 :(得分:0)

您忘记覆盖从Object继承的toString()方法。

在这种情况下,您可以使用以下内容:

&

Java编译器只是不知道如何打印它,你必须告知它:)

答案 1 :(得分:0)

在你的addPets()方法中,你只需要向petArray添加3个对象,而你需要填充2个空格,因为你声明该数组的长度是5。

您可以将阵列的长度更改为3,或者您可以再添加2个对象,这样可以解决您的问题。

如上所述,添加toString方法将消除寻址问题。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

根据您的代码,您的输出正常。您必须覆盖toString()方法以根据您的要求进行打印。添加它可能会有所帮助。

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