2015-10-31 26 views
0

我正在嘗試編寫一個簡單的if函數來計算某人是否有資格獲得紅利。對於if函數未定義的運算符 - Java

private int id = 0; 
private String forename; 
private String surname; 
private Salary salary; 
private CompanyPosition companyPosition; 

這裏是IF:

public boolean eligibleForBonus() {  
    boolean isEligible = true; 
    if (salary >= 40000) { 
     isEligible = true; 
    } 
    return isEligible; 
} 

薪水是另一個類的字段

private double salary = 0.0; 

(也有這一切都是在有田的 「僱員」 類完成定義的吸氣劑和定型劑)

但是,我得到一個與IF中的錯誤,說:

操作員> =未定義的參數類型,工資,詮釋

+4

消息說明了這一切。如果(香蕉> =蘋果)測試應該怎麼辦? –

回答

4

你只需要打電話給你消氣劑從Salarysalary對象檢索工資:

if (salary.getSalary() >= 40000) 

請注意,您的整個方法可以更簡單地寫成這樣:

public boolean eligibleForBonus(){ 
    return salary.getSalary() >= 40000; 
} 

作爲一個方面說明,你目前的方法不能正常工作,因爲你初始化isEligible標誌爲true而不是false(所以該方法將始終返回無論工資是多少)。

您也可以引入一個常數來保存獎金所需的最低工資,並在其他地方使用。這避免了使用幻數,它正確記錄了40000數字應該表示的意思。

private static final double MINIMUM_SALARY_FOR_BONUS = 40000; 

public boolean eligibleForBonus(){ 
    return salary.getSalary() >= MINIMUM_SALARY_FOR_BONUS; 
} 
+0

哇!非常感謝您的迅速答案! 你真的清除在那裏瞭解我的理解並將其向前推進一步 我很感激! – AcidMicrowave

0

salary是一個對象引用,你不能比較用原語類型一個對象引用(除非其包裝)。

你應該比較喜歡if (salary.getSalary() >=40000)

+0

簡單而有用!謝謝人 – AcidMicrowave

+0

最受歡迎!你可以upvote,如果你願意:) – Rehman

+0

我需要有超過15代表:(我會回來,當我超過15代表!! – AcidMicrowave

0

你嘗試檢查,如果你的目標是Salary> = 40000,您需要使用您的salary成員Salary類的消氣。

if (salary.getSalary() >= 40000) { 
    isEligible = true; 
} 

而且你並不真的需要布爾與如果你的方法:用null

public boolean eligibleForBonus() { 
    return salary.getSalary() >= 40000 
} 

你不應該初始化String變量。

0

你應該做salary.getSalary() >= 40000,薪水是一個對象,你想比較它的領域「薪水」的值(雖然奇怪的命名)。

順便說一句:你永遠不會返回false,你的init是錯誤的和無用的。

相關問題