所以在我的代码中,我创建了一个名为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 空值 空
答案 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
}