编写一个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();
}
}
# 1 楼答案
最明显的问题是,您没有检查5的上限。除此之外,还不清楚你想要它做什么,它没有做什么。请具体说明您对这段代码进行了什么调用,得到了什么结果,以及希望得到什么结果
从你的“规格”中不清楚一旦设定了奖金百分比,你想用它做什么。正如Starkey所描述的,一种选择是增加小时工资,以包括奖金。在一个真实的系统中,这对我来说似乎不合理,但也许这就是你应该做的(我猜这是家庭作业)
我希望一个更真实的实现会有一个步骤,计算一段时间内的总工资,将小时数乘以小时工资,然后将总工资乘以奖金百分比。但再一次,从你的规范中不清楚你想要做什么
# 2 楼答案
你需要做的(我相信)是根据你打电话给super的奖金设置小时费率
此呼叫将根据奖金调整hourlyrate。这个电话有点难听,因为有一个对PermanentEmployeeBonus的错误输入的检查
如果(在构造之后)调用
setPermanentEmployeeBonus
,则会出现问题。如何将这些信息传递给基类?在基类中创建一个setHourlyRate
,并在调用setPermanentEmployeeBonus
时对其进行更改