Java 打印地址而不是数组元素?
所以在我的代码中,我创建了一个名为Pet的类,它既有一个默认构造函数,也有一个传入字符串名和Pet的int-age的非默认构造函数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
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抱歉,不是故意说错误。我的问题作了改动。