2013-10-15 86 views
1

我只是試圖做一個簡單的if語句,該語句告訴您獲得的個人津貼取決於您的年齡。在Employee課中有一個「年齡」的字段,這就是爲什麼我已經超過了年齡。但是我得到錯誤: 運算符>未定義爲參數類型Employee(s)。運算符<未定義爲參數類型員工,int

我哪裏錯了?這裏是我的代碼:

double calculatePersonalAllowance(Employee age){ 

    if (this.age < 65) { 
     personalAllowance = 94440; 

    } 

     else if (this.age >= 65 && <75){ 
     personalAllowance = 10500; 

    } 

     else if (this.age >75){ 
     personalAllowance = 10660; 

    return personalAllowance; 
    } 
+0

'age'是一個壞僱員變量的名稱。 – Dukeling

+1

在方法中沒有使用方法參數是很糟糕的。 – Kayaman

+0

沒有發佈[SSCCE](http://sscce.org/)總是讓我們的生活變得更加困難(特別要注意「獨立」部分)。 – Dukeling

回答

6

​​

應該是:

else if (this.age >= 65 && this.age <75) 

我們強烈建議閱讀15.23. Conditional-And Operator &&The if-then and if-then-else Statements

而且,它是多餘的,以有一個從未使用的參數。如果你不使用age,從方法的簽名中刪除:

double calculatePersonalAllowance() 

不要擔心,age你指到班級成員而不是本地的。

+0

我仍然收到運算符「> =」未定義的錯誤。有任何想法嗎? – user2131803

+0

不能....... – Maroun

+0

我不知道發生了什麼事。我已經改變了你的說法。 – user2131803

1

第一:

"There is a field for "age" in the Employee class, which is why I have passed over the age"

您還沒有歲以上過去了,你已經做了以下內容:其中經過的Employee對象,而不是年齡字段的引用(僱員年齡)。括號之間的'年齡'變量是引用調用方法的Employee對象的方法的局部變量,爲了獲得您需要的年齡,可以直接從您引用的僱員對象獲取它,或者通過getter方法。

二: 的方式的。如果表達式被讀取如下:

if(expression){do code} //where expression returns either true or false 

或者與一些運營商:

if(expression && expression) 

你有如下:

else if (this.age >= 65 && <75){ 
//Which equates to the below: 
else if(expression && <75){ 

的編譯器期待一個表達式,但找到一個操作數。你的年齡已經作爲參數傳遞給你的方法,但似乎也試圖訪問一個名爲age的字段。我建議將方法參數更改爲像(Employee emp)這樣的東西。然後改變你擁有這個地方的任何地方。

else if (emp.age >= 65 && emp.age <75){ 
//You effectively make 
else if(expression && expression){ 

它滿足編譯器!

1

我認爲this.age需變化employee.age(this.age >= 65 && <75)需要改變,因爲if (employee.age >= 65 && employee.age<75)

完整的方法如下。

double calculatePersonalAllowance(Employee employee){ 
     double personalAllowance = 0; 
    if (employee.age < 65) { 
     personalAllowance = 94440; 

    }else if (employee.age >= 65 && employee.age<75){ 
      personalAllowance = 10500; 

    }else if (employee.age >75){ 
      personalAllowance = 10660;   
    } 
     return personalAllowance; 
} 
+0

呃,你爲什麼選擇'double'類型?請注意,如果您試圖表示一個小數(例如.1),浮點數有一些固有的設計選擇,會給出不準確的結果。 –

+1

@ Clockwork-Muse ..謝謝..我沒有添加任何新東西。我剛剛修改了OP的問題。 – Prabhakaran

+1

對不起,我錯過了原始問題中的退貨簽名。 –

0

如果你的方法,你要檢查屬性格式的年齡是你必須使用所有參數way.In這種情況下,方法可以是靜態的這樣的參數:

static double calculatePersonalAllowance(Employee employee) 
{ 
    double personalAllowance = 0.0;//default value 
    int age = employee.age; 
    if (age < 65) 
    { 
     personalAllowance = 94440; 
    } 
    else if (age >= 65 && age <75) 
     { 
      personalAllowance = 10500; 
     } 
     else if (age >75) 
     { 
       personalAllowance = 10660; 
     } 
    return personalAllowance; 
} 
相關問題