基本 ToString 错误

Basic ToString Error

我目前正在从事一个需要 ToString 的项目。我创建了一个非常简单的方法和 ToString 来说明我的问题。我的 evaluateValue 方法将执行特定计算并设置 occupationage 变量。

问题是我的 ToString 不会打印任何内容。我想让 ToString 显示我的方法完成了什么,但不确定为什么它不能正常工作。

期望的输出:

Name: Bob 
Occupation: Farmer
Age: 31

我的代码:

public class ToStringExample
{
    static String occupation;
    static int age;

    private static void evaluateValue(String name)
    {   
        if(name.equals("Bob"))
        {
            occupation = "Farmer";
            age = 31;
        }

        if(name.equals("Fred"))
        {
            occupation = "Programmer";
            age = 45;
        }

        else
        {
            occupation = "Undefined";
            age = 22;
        }
    }

    public String toString()
    {
        return "Name: " + name + "\nOccupation: " + occupation + "\nAge: " + age;       
    }

    public static void main(String[] args) 
    {
        System.out.println(evaluateValue("Bob"));
    }
}

您无法打印 evaluateValue(),因为它是 void 方法。相反,您可以从 evaluateValue 中删除 static 修饰符并创建一个 ToStringExample 对象。然后你可以调用 evaluateValue("Bob") 并打印对象。

不要什么都做static。实例化一个实例(这样你就可以调用 toString() 了)。像,

public class ToStringExample {
    String occupation;
    int age;
    String name;

    public ToStringExample(String name) {
        this.name = name;
    }

    public void evaluateValue() {
        if (name.equals("Bob")) {
            occupation = "Farmer";
            age = 31;
        } else if (name.equals("Fred")) {
            occupation = "Programmer";
            age = 45;
        } else {
            occupation = "Undefined";
            age = 22;
        }
    }

    public String toString() {
        return "Name: " + name + "\nOccupation: " + occupation + "\nAge: "
                + age;
    }

    public static void main(String args[]) {
        ToStringExample tse = new ToStringExample("Bob");
        tse.evaluateValue();
        System.out.println(tse);
    }
}

输出是

Name: Bob
Occupation: Farmer
Age: 31