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