2017-10-14 6 views
1

私は以下のクラス図を持っています。しかしブール値のメソッドから返される文字列

: "£100000.0(£29822.0税)のディレクターとボーナスの対象ですジェームズ、シド(1234)" 私は出力にのように見えるのtoStringを必要

enter image description here

私は従業員がボーナスの対象となるかどうかにかかわらず返却する部分を印刷する方法を見つけることができません。

ご協力いただきありがとうございます。

ここにクラスを作成しようとしました。

package org.com1027.formative.ye00036; 

public class Employee { 
    //Class Field(s) 
    private int id = 0; 
    private String forename = null; 
    private String surname = null; 
    private Salary salary = null; 
    private CompanyPosition companyPosition = null; 

    //Parameterised constructor using all fields, allowing creation of objects 
    public Employee(int id, String forename, String surname, Salary salary, CompanyPosition companyPosition) { 
     super(); 
     this.id = id; 
     this.forename = forename; 
     this.surname = surname; 
     this.salary = salary; 
     this.companyPosition = companyPosition; 
    } 

    //Getters-Accessors 
    //Returns the employee's ID 
    public int getId() { 
     return id; 
    } 
    //Returns the employee's Forename 
    public String getForename() { 
     return forename; 
    } 
    //Returns the employee's Surname 
    public String getSurname() { 
     return surname; 
    } 
    //Returns the employee's Salary 
    public Salary getSalary() { 
     return salary; 
    } 
    //Returns the employee's Company Position 
    public CompanyPosition getPositionName() { 
     return companyPosition; 
    } 
    //Checks if an employee is eligible for bonus 
    public boolean eligibleForBonus(){ 
     if (salary.getSalary() >= 40000) 
      return true; 
     else 
      return false; 
    } 

    @Override 
    public String toString() { 
     return getForename() + ", " + getSurname() + "(" + getId() + 
       "): " + getPositionName() + "at " + salary.getSalary() + " (" + salary.calculateTax() + ") and is "; 
    } 

} 
+0

を行うことができます方法です。あなたの質問を編集して、あなたのデバッグが明らかにしたことと、特定のコード行に関する特定の質問を表示してください。参照:[最小限で完全で検証可能な例の作成方法](http://stackoverflow.com/help/mcve)と[小規模プログラムのデバッグ方法](https://ericlippert.com/2014/03/05)/how-to-debug-small-programs /)を実行します。 –

+0

@ bcsb1001従業員の給与によって。その40000以上の場合、方法はボーナスの対象となることを返すべきです.40000未満であれば、適格ではないと返すべきです。 –

答えて

0

私は資格やないという条件を持っているあなたのtoStringメソッドを変更することを示唆している:あなたはまた、toStringメソッドでは、より複雑なロジックを持つことができます

 return getForename() + ", " + getSurname() + "(" + getId() + 
      "): " + getPositionName() + "at " + salary.getSalary() + " (" + salary.calculateTax() + ") and is " 
      + (eligibleForBonus()? "eligible for a bonus" : "not eligible for a bonus"); 

、彼らは返す必要はありません。すぐに:

@Override 
public String toString() { 
    String returnString = getForename() + ", " + getSurname() + "(" + getId() + 
      "): " + getPositionName() + "at " + salary.getSalary() + " (" + salary.calculateTax() + ") and is "; 

    if(eligibleForBonus()){ 
     returnString += "eligible for bonus."; 
    }else{ 
     returnString += "not eligible for bonus."; 
    } 

    return returnString; 

} 
+1

あなたの答えをダウン投票した人は、あなたの答えの最初のコードスニペットのためにおそらくそうしました。その無効です。 'stringはbooleanに変換できません 'というエラーが発生します。 – Yousaf

+0

ああ素敵なスポット。ありがとうございました。 – luckydog32

1

ここでは3項演算子を使用できます。

toStringメソッドでは、String型変数を宣言し、給与が40,000より大きいかどうかに応じてこの変数の値を設定します。次に、この変数の値を返すStringの末尾に追加します。ここで

は、あなたがこのコードで実行、デバッグの証拠がないので、私はこの質問をd​​ownvotedしていることに

@Override 
public String toString() { 
    String val = (eligibleForBonus()) ? "eligible for bonus" : "not eligible for bonus"; 

    return getForename() + ", " + getSurname() + "(" + getId() + 
       "): " + getPositionName() + "at " + salary.getSalary() + " (" + salary.calculateTax() + ") and is "+val; 
    } 
+0

val Stringを決定する際に、toString()内でそれを再定義するのではなく、オブジェクトのeligibleForBonus()メソッドを呼び出すことができます。 – luckydog32

+0

@ luckydog32私はちょうど彼が彼の目標を達成する方法を彼に示した。とにかくあなたは正しいです、 'qualifiedForBonus()'メソッドを呼び出す方が良い選択です。私の答えを編集しました。 – Yousaf

関連する問題