【发布时间】:2011-11-04 15:53:05
【问题描述】:
我最近被要求将使用继承的类重写为使用组合的类。我在重写 toString() 方法时遇到了问题; toString() 方法不会返回字符串值,并且我没有收到运行时错误或编译错误。我最终将返回值更改为 void 并将方法名称更改为输出。所以我没有返回字符串值,而是使用 system.out
我尝试使用 toString
public String toString()
{
return String.format(
"%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f\n%s: %.2f\n%s: %.2f",
"based-salaried commission employee", cEmp.getFirstName(), cEmp.getLastName(),
"social security number", cEmp.getSocialSecurityNumber(),
"gross sales", cEmp.getGrossSales(),
"commission rate", cEmp.getCommissionRate(),
"base salary",baseSalary,
"earnings", earnings());
}
我解决了什么
public void outPut()
{
System.out.printf(
"%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f\n%s: %.2f\n%s: %.2f",
"based-salaried commission employee", cEmp.getFirstName(), cEmp.getLastName(),
"social security number", cEmp.getSocialSecurityNumber(),
"gross sales", cEmp.getGrossSales(),
"commission rate", cEmp.getCommissionRate(),
"base salary",baseSalary,
"earnings", earnings());
}
我的问题是为什么我在使用 toString() 方法时没有收到来自 javac 的编译或运行时错误,如果没有错误,为什么它不返回字符串值。
希望这不是一个太奇怪的问题。
【问题讨论】:
-
>"toString() 方法不会返回字符串值" 它返回的是什么?
-
如果方法签名要返回字符串,它必须返回一些字符串,否则会出现编译时问题。我们需要更多信息来回答这个问题。
-
你用那个
public void outPut()换成public String toString()?不太合理。 -
我首先创建了一个包含 toString 方法的类的 Object,它的名字是 base。然后在主类中我调用了 base.toString(); 这样的方法;当我运行程序时,虽然它应该返回一个它不返回的字符串,但它运行程序时没有任何输出。
-
@smkelsey:你意识到调用 toString() 只返回一个字符串是吗?它不显示它。使用
System.out.println(base);