操作员<未定义参数类型Employee,int

时间:2013-10-15 11:59:52

标签: java

我只是想做一个简单的if声明,告诉你你得到的个人津贴,取决于你的年龄。 Employee课程中有一个“年龄”字段,这就是为什么我已经过了这个年龄。但是我收到了错误:     <运营商>未定义参数类型Employee,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;
  }

4 个答案:

答案 0 :(得分:6)

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

应该是:

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类成员,而不是本地成员。

答案 1 :(得分:1)

首先:

  

“员工类中有一个”年龄“字段,这就是为什么我已经超过了这个年龄”

您还没有超过这个年龄,您已经完成了以下操作:(员工年龄),它通过对Employee对象的引用,而不是age字段。括号之间的'age'变量是引用调用方法的Employee对象的方法的本地变量,以便获得您需要直接从您引用的员工对象获取它的年龄,或者通过getter获取它的年龄方法

第二: 读取If表达式的方式如下:

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)。然后改变你拥有this.age到emp.age的地方。

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

满足编译器!

答案 2 :(得分: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;
 }

答案 3 :(得分:0)

如果在你的方法中你想要检查它的参数的属性年龄,你必须一直使用参数。在这种情况下,方法可以像这样静态:

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;
}