Напишите java метод getBonusPercentage () для возврата бонуса сотрудника плюс зарплата - PullRequest
0 голосов
/ 01 декабря 2010

Любая помощь в прохождении нижеуказанного класса 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 голосов
/ 01 декабря 2010

Самая очевидная проблема заключается в том, что вы не сверяете с верхним пределом 5. Кроме того, неясно, что вы хотите, чтобы он делал, а что нет. Будьте конкретны - какой вызов вы делаете для этого кода, какие результаты вы получаете, и какие результаты вы ожидаете получить?

Из вашей "спецификации" неясно, что вы хотите делать с процентом бонуса после его установки. Один из вариантов, описанный Starkey, - увеличить почасовую ставку, чтобы включить бонус. Это не кажется мне разумным в реальной системе, но, возможно, это то, что вы должны делать (я предполагаю, что это домашняя работа).

Я ожидаю, что в более реальной реализации будет шаг расчета общей заработной платы за некоторый период времени, который умножит часы на почасовую ставку, а затем увеличит общую сумму на процент бонуса. Но опять же, из вашей спецификации не ясно, что вы хотите сделать.

0 голосов
/ 01 декабря 2010

Вам нужно сделать (я считаю) установленную почасовую ставку на основе бонуса в вашем звонке на супер.

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

Этот звонок регулирует почасовую ставку на основе бонуса.Вызов немного уродлив, потому что есть проверка на плохой ввод в PermanentEmployeeBonus.

Проблема возникает, если (после построения) вы вызываете setPermanentEmployeeBonus.Как вы получаете эту информацию в базовый класс?Создайте setHourlyRate в базовом классе и измените его при вызове setPermanentEmployeeBonus.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...