我目前正在开发一个需要ToString的项目。我创建了一个非常简单的方法和ToString来说明我的问题。我的evaluateValue
方法将执行特定计算并设置occupation
和age
变量。
问题是我的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"));
}
}
答案 0 :(得分:2)
不要做所有事情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
答案 1 :(得分:0)
您无法打印evaluateValue()
,因为它是void
方法。相反,您可以从evaluateValue中删除static
修饰符并创建一个ToStringExample
对象。然后你可以调用evaluateValue("Bob")
并打印对象。