无法从toString()Java打印

时间:2014-08-10 09:35:28

标签: java tostring

我使用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

3 个答案:

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