2010-12-01 14 views
0

以下のJavaクラスを完了でどのような援助がはるかに高く評価されるだろう返すためのJava getBonusPercentage()メソッドを書く - 固定時給で時間によって支払わ従業員の賞与に加えて給与

常設の従業員を。 彼らはまた、よく、またはボーナスの対象としないことがあり -

彼らは彼らのボーナスがゼロよりも大きいことが、LESTより5 かの必要があります資格ない場合、彼らはその後、彼らのボーナスの割合が0 に設定する必要があります対象とならない場合パーセンテージの値が正しくない場合は、パーセンテージをゼロに設定し、エラーメッセージを出力します。 ボーナスは給与計算され、追加されます。

は、ここで私はこれまで(延長従業員のスーパークラスから)持っているものだ -

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(); 

} 


} 
+0

問題は何ですか。コードはほぼ正しいと思われます。 –

+0

問題についてどう理解できないのですか、助けが必要ですか? – Guy

+0

setPermanentEmployeeBonusメソッドを実装するためのアドバイスを求めていますか? – Ralph

答えて

0

は、スーパーへのお電話でのボーナスに基づいて時給を設定されている(私は信じて)実行する必要があります。

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

この呼び出しは、ボーナスに基づいて時間単位を調整します。 PermanentEmployeeBonusの入力が間違っているかどうかのチェックがあるため、この呼び出しは少し醜いです。

(工事後)setPermanentEmployeeBonusを呼び出すと問題が発生します。あなたはどのようにその情報を基本クラスに取得しますか?ベースクラスにsetHourlyRateを作成し、setPermanentEmployeeBonusを呼び出すと変更します。

0

最も顕著な問題は、あなたが5の上限値をチェックしていないことです。それ以外に、それがしていないことをあなたがしたいことは明確ではありません。具体的に言えば、このコードをどのように呼び出しているのですか、結果はどのようになっていますか。

あなたの「スペック」から、あなたがボーナスのパーセンテージを設定したらどうするかは不明です。 Starkeyで説明されているように、1つのオプションは、ボーナスを含むように時間レートを増やすことです。これは実際のシステムでは私には分かりづらいかもしれませんが、おそらくそれがあなたがすると予想されるものです(私はこれが宿題であると推測しています)。

より現実的な実装では、ある時間期間の合計給与を計算するステップがあり、それは時間当たりの時間に時間を掛け、合計をボーナスの割合で増加させることが予想されます。しかし、やはり、スペックからあなたがしたいことは明らかではありません。

関連する問題