Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印地址而不是数组元素?_Java_Bluej - Fatal编程技术网

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

Java 打印地址而不是数组元素?,java,bluej,Java,Bluej,所以在我的代码中,我创建了一个名为Pet的类,它既有一个默认构造函数,也有一个传入字符串名和Pet的int-age的非默认构造函数 public class Pet { // instance variables private int age; private String name; /** * Constructor for objects of class Pet */ public Pet() { // initialise instance v

所以在我的代码中,我创建了一个名为Pet的类,它既有一个默认构造函数,也有一个传入字符串名和Pet的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]);
    }
}
公共类PetArray
{
//实例变量
私人宠物园;
/**
*PetArray类对象的构造函数
*/
公共花园()
{
//初始化实例变量
petArray=新宠物[5];
}
公共空间添加宠物()
{
//把你的代码放在这里
宠物myPet=新宠物(4个“斑点”);
petArray[0]=(myPet);
petArray[1]=新宠物(2,“幸运”);
petArray[2]=新宠物(7,“乔”);
}
公共空间
{
对于(int i=0;i
}

但是,当我试图打印出来时,我在终端窗口中得到了这个

Pet@13255e3c Pet@171ac880 Pet@52185407 无效的
null

您忘记重写从对象继承的toString()方法

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

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

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

您忘记重写从对象继承的toString()方法

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

@Override
public String toString() {
    return (name + age);
}
Java编译器只是不知道如何打印它,您必须通知它:)

在addPets()方法中,您只向petArray添加了3个对象,而当您声明数组长度为5时,还需要填充2个空间

您可以将数组的长度更改为3,也可以再添加2个对象,这将解决您的问题

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

在addPets()方法中,您只向petArray添加了3个对象,而在声明数组长度为5时,还需要填充2个空间

class Pet {
    ...
    @Override
    public String toString(){
        // the string passed from here will be shown in console
    }
}
您可以将数组的长度更改为3,也可以再添加2个对象,这将解决您的问题


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

根据代码,您的输出很好。必须重写toString()方法才能根据需要打印。加上这个可能会有帮助

class Pet {
    ...
    @Override
    public String toString(){
        // the string passed from here will be shown in console
    }
}
@override
public string toString(){
 return "your required string"; // i.e : name or name+age
}

根据您的代码,您的输出是良好的。必须重写toString()方法才能根据需要打印。加上这个可能会有帮助

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

这不是一个错误。您需要在类中重写
toString()
。请阅读
toString
方法的功能。您需要在您的
Pet
类中编写一个。@LastMind抱歉,不是故意说错误。对我的问题进行了修改,这不是一个错误。您需要在类中重写
toString()
。请阅读
toString
方法的功能。您需要在您的
Pet
类中编写一个。@LastMind抱歉,不是故意说错误。我的问题作了改动。