1

我只是想做一个简单的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

4 回答 4

6

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

应该:

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

强烈建议阅读15.23。条件与运算符 &&if-then 和 if-then-else 语句

此外,拥有一个从未使用过的参数是多余的。如果您不使用age,请将其从方法的签名中删除:

double calculatePersonalAllowance()

不用担心,age您指的是班级成员,而不是本地成员。

于 2013-10-15T12:00:56.027 回答
1

第一的:

“在Employee类中有一个“年龄”字段,这就是我超过年龄的原因”

您还没有超过年龄,您已经完成了以下操作: (Employee age) 它传递了对 Employee 对象的引用,而不是年龄字段。括号之间的“年龄”变量是引用调用该方法的 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){

满足编译器!

于 2013-10-15T12:10:07.027 回答
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;
 }
于 2013-10-15T12:11:05.363 回答
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;
}
于 2013-10-15T13:55:30.027 回答