【问题标题】:Java: Employee Hierarchy Formatting Error of the toString(s)Java:toString(s) 的员工层次结构格式错误
【发布时间】:2015-01-28 21:46:09
【问题描述】:

您好,所以我必须创建一个名为 Employee 的超类。然后是从 Employee2 继承的 CommissionEmployee2 类(人是具有名字、姓氏和 SSN 的员工。并且这种类型的员工赚取佣金)。但是当我运行测试程序时,toStrings 出现格式错误。 P.S 对于复制和粘贴代码的奇怪格式感到抱歉!

//return String representation of Employee Object

public String toString()
{
return String.format("%s: %s %s%n%s: %s%n%s" , "employee" , getFirstName(), getLastName(), "social security number" , getSocialSecurityNumber());
}

}

这是CommissionEmployee2.java中写的toString

//return String representation of CommissionEmployee copied from the book

public String toString()
{
return String.format("%s %s%n%s: %.2f%n%s: %.2f" , "commission employee" , super.toString(), "gross sales" , getGrossSales(), "commission rate" , getCommissionRate());
}
}

【问题讨论】:

  • 下一次,一个最小的例子会很好。大部分代码与问题无关

标签: java inheritance syntax formatting hierarchy


【解决方案1】:

您有 6 个 %s 字段,但此行中只有 5 个参数:

return String.format("%s: %s %s%n%s: %s%n%s" , "employee" , getFirstName(), getLastName(), "social security number" , getSocialSecurityNumber());

【讨论】:

    【解决方案2】:

    所以你有两个类:

    第一个是 Employee2,具有以下 toString() 实现:

    @Override 
    public String toString()
    {
        return String.format("%s: %s %s%n%s: %s%n%s" , "employee" , getFirstName(), getLastName(), "social security number" , getSocialSecurityNumber());
    }
    

    仔细观察,您可以看到第一个参数包含 6 次 %s,但您只有 5 个进一步的参数,因此缺少一个参数。

    在第二类CommissionEmployee2toString()implementation 看起来像:

    @Override
    public String toString()
    {
        return String.format("%s %s%n%s: %.2f%n%s: %.2f" , "commission employee" , super.toString(), "gross sales" , getGrossSales(), "commission rate" , getCommissionRate());
    }
    

    在这里,您还声明了 6 个占位符,并为所有这些占位符传递了一个参数,这非常好。但是您将父类的toString() 称为第二个参数(super.toString()),它将调用上面提到的损坏的toString() 方法。因此,您会收到异常。

    进一步阅读:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多