编写一个java getBonusPercentage()方法来返回员工的奖金和工资

时间:2010-12-01 12:22:43

标签: java methods

非常感谢任何帮助完成下面的Java类 -

永久员工按固定小时费率按小时付款。 他们也可能有资格获得奖金 -

如果他们没有资格,那么他们的奖金百分比应该设置为0 如果他们确实有资格,他们的奖金必须大于零但不得超过5 如果输入的百分比值不正确,则应将百分比设置为零并打印一条错误消息。 奖金是根据他们的薪水计算的并加到它上面。

这是我到目前为止所做的事情(从员工超级班级扩展而来) -

public class PermanentEmployee extends Employee 
{

 private double PermanentEmployeeBonus;

 public PermanentEmployee(String firstName, String lastName, double hourlyRate, double PermanentEmployeeBonus)
 {

  super(firstName, lastName, hourlyRate);

  setPermanentEmployeeBonus(PermanentEmployeeBonus);


 }

 public double getPermanentEmployeeBonus()
 {

  return PermanentEmployeeBonus;

 }

 public void setPermanentEmployeeBonus(double PermanentEmployeeBonus)
 {

  //If the user input is valid, update the managerial bonus with the newly inputted value. 
  if(PermanentEmployeeBonus > 0)
  {

   this.PermanentEmployeeBonus = PermanentEmployeeBonus;

  }
  //Otherwise prevent a managerial bonus greater than zero being overwritten 
  else if(PermanentEmployeeBonus <= 0)
  {

   if(PermanentEmployeeBonus <= 0)
   {

    this.PermanentEmployeeBonus = 0;

   }

  super.decorateConsole();

  //Alert the user to their mistake.
  System.out.println("Error ! ! ! - An attempt to set the employee " + super.getFirstName() + " " + super.getLastName() + "'s permanent employee bonus to zero was detected.\n");

  super.decorateConsole();

  }

 }

 public void printState()
 {

  super.printState();

  System.out.println("[PERMANENT EMPLOYEE BONUS] for " +super.getFirstName() + " " + super.getLastName() + " = " + PermanentEmployeeBonus + "\n");

  super.decorateConsole();

 }


}

2 个答案:

答案 0 :(得分:0)

你需要(我相信)根据你对超级电话的奖励设定小时费率。

super(firstname, lastname, (hourlyrate * (1 + ((PermanentEmployeeBonus<0) ? 0 : PermanentEmployeeBonus)/100.0)));

此调用根据奖金调整每小时。该调用有点难看,因为检查了对PermanentEmployeeBonus的错误输入。

如果(施工后)您拨打setPermanentEmployeeBonus,则会出现问题。你如何将这些信息提供给基类​​?在基类中创建setHourlyRate,并在调用setPermanentEmployeeBonus时更改它。

答案 1 :(得分:0)

最明显的问题是你没有检查5的上限。除此之外,还不清楚你想要它做什么,它没有做。具体一点 - 你对这段代码做了什么电话,你得到了什么结果,以及你期望得到什么结果?

根据您的“规范”,您不清楚在设置奖金百分比后您想要做什么。如Starkey所述,一种选择是增加小时费率以包括奖金。在真实的系统中,这对我来说似乎不合理,但也许这是你应该做的事情(我猜这是家庭作业)。

我希望更真实的实施可以计算一段时间内的总工资,这会使小时数乘以小时数,然后按奖金百分比增加总数。但同样,从你的规范中不清楚你想做什么。