有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如能协助完成以下Java课程,将不胜感激-

固定小时工资的固定员工。 他们也可能有资格或没有资格获得奖金-

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

以下是我到目前为止所做的(从employee超类扩展而来)-

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) 个答案

  1. # 1 楼答案

    最明显的问题是,您没有检查5的上限。除此之外,还不清楚你想要它做什么,它没有做什么。请具体说明您对这段代码进行了什么调用,得到了什么结果,以及希望得到什么结果

    从你的“规格”中不清楚一旦设定了奖金百分比,你想用它做什么。正如Starkey所描述的,一种选择是增加小时工资,以包括奖金。在一个真实的系统中,这对我来说似乎不合理,但也许这就是你应该做的(我猜这是家庭作业)

    我希望一个更真实的实现会有一个步骤,计算一段时间内的总工资,将小时数乘以小时工资,然后将总工资乘以奖金百分比。但再一次,从你的规范中不清楚你想要做什么

  2. # 2 楼答案

    你需要做的(我相信)是根据你打电话给super的奖金设置小时费率

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

    此呼叫将根据奖金调整hourlyrate。这个电话有点难听,因为有一个对PermanentEmployeeBonus的错误输入的检查

    如果(在构造之后)调用setPermanentEmployeeBonus,则会出现问题。如何将这些信息传递给基类?在基类中创建一个setHourlyRate,并在调用setPermanentEmployeeBonus时对其进行更改