我使用toString()
来呼叫animal
,但它没有识别animal
变量,以下是我的代码。
package animals;
public class Animal {
public String country;
public String commonNam;
public Animal(String name, String country){
Animal animal = new Animal("Emu", "Australia");
}
public String toString(){
Animal animal = new Animal("Emu", "Australia");
return String.format("%d,%d",animal);
}
public static void main(String[] args) {
System.out.println("Animal Test");
System.out.println(animal);
}
}
我想要的结果如下:
Animal Test
Emu, Australia
答案 0 :(得分:2)
上面给出的代码没有多大意义。以下是更正后的代码。它会给你你想要的结果。
public class Animal {
public String country;
public String commonName;
public Animal(String name, String country) {
this.country = country;
commonName = name;
}
public String toString() {
return String.format("%s,%s",commonName,country);
}
public static void main(String[] args) {
Animal animal = new Animal("Emu", "Australia");
System.out.println("Animal Test");
System.out.println(animal);
}
}
输出:
Animal Test
Emu,Australia
答案 1 :(得分:1)
要获得所需的结果,您必须通过object
Animal
课程而不是Animal
课程
尝试:
System.out.println(new Animal("Emu", "Australia"));
而不是
System.out.println(Animal);
你的构造方法应该是:
public Animal(String name, String country){
this.commonNam=name;
this.country=country;
}
toString方法:
public String toString(){
return String.format("%s,%s",this.animal,this.country);
}
答案 2 :(得分:0)
只需将System.out.println(Animal);
替换为动物的某个对象,即:
System.out.println(new Animal("Emu", "Australia");
您将获得stack overflow
异常,因为您正在使用构造函数创建新实例。
这是因为cunstructor以递归和无限方式创建新实例。
要摆脱用构造函数替换你的代码。
public Animal(String name, String country) {
this.commonNam = name;
this.country = country;
}