if 函数的未定义运算符 - Java
Undefined operator for if function - Java
我正在尝试编写一个简单的 if 函数来计算某人是否有资格获得奖金。这是在具有以下字段的 "Employee" class 中完成的:
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;
}
薪水是另一个class有一个字段
private double salary = 0.0;
(还定义了所有 getter 和 setter)
但是,我在带有 IF 的行上收到错误消息:
The operator >= is undefined for the argument type Salary, int
salary
是一个对象引用,您不能将对象引用与原始类型(除非它的包装器)进行比较。
你应该比较一下 if (salary.getSalary() >=40000)
您正在尝试检查您的对象 Salary
是否 >= 40000。您需要使用您 salary
成员的 getter Salary
class.
if (salary.getSalary() >= 40000) {
isEligible = true;
}
此外,您实际上并不需要方法中的布尔值和 if:
public boolean eligibleForBonus() {
return salary.getSalary() >= 40000
}
你不应该用 null
.
初始化 String
变量
你应该这样做salary.getSalary() >= 40000
,薪水是一个对象,你想比较它的字段的值"salary"(虽然命名很奇怪)。
顺便说一句:你永远不会 return false,你的 init 是错误的而且没用。
您只需调用 getter 即可从类型为 Salary
的 salary
对象中检索工资:
if ( salary.getSalary() >= 40000)
请注意,您的整个方法可以像这样更简单地编写:
public boolean eligibleForBonus(){
return salary.getSalary() >= 40000;
}
作为旁注,您当前的方法无法正常工作,因为您将 isEligible
标志初始化为 true
而不是 false
(因此该方法将始终 return true
不管工资是多少)。
您还可以引入一个常量来保存奖金所需的最低工资并将其用于其他地方。这避免了使用幻数,并正确记录了 40000
数字的含义。
private static final double MINIMUM_SALARY_FOR_BONUS = 40000;
public boolean eligibleForBonus(){
return salary.getSalary() >= MINIMUM_SALARY_FOR_BONUS;
}
我正在尝试编写一个简单的 if 函数来计算某人是否有资格获得奖金。这是在具有以下字段的 "Employee" class 中完成的:
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;
}
薪水是另一个class有一个字段
private double salary = 0.0;
(还定义了所有 getter 和 setter)
但是,我在带有 IF 的行上收到错误消息:
The operator >= is undefined for the argument type Salary, int
salary
是一个对象引用,您不能将对象引用与原始类型(除非它的包装器)进行比较。
你应该比较一下 if (salary.getSalary() >=40000)
您正在尝试检查您的对象 Salary
是否 >= 40000。您需要使用您 salary
成员的 getter Salary
class.
if (salary.getSalary() >= 40000) {
isEligible = true;
}
此外,您实际上并不需要方法中的布尔值和 if:
public boolean eligibleForBonus() {
return salary.getSalary() >= 40000
}
你不应该用 null
.
String
变量
你应该这样做salary.getSalary() >= 40000
,薪水是一个对象,你想比较它的字段的值"salary"(虽然命名很奇怪)。
顺便说一句:你永远不会 return false,你的 init 是错误的而且没用。
您只需调用 getter 即可从类型为 Salary
的 salary
对象中检索工资:
if ( salary.getSalary() >= 40000)
请注意,您的整个方法可以像这样更简单地编写:
public boolean eligibleForBonus(){
return salary.getSalary() >= 40000;
}
作为旁注,您当前的方法无法正常工作,因为您将 isEligible
标志初始化为 true
而不是 false
(因此该方法将始终 return true
不管工资是多少)。
您还可以引入一个常量来保存奖金所需的最低工资并将其用于其他地方。这避免了使用幻数,并正确记录了 40000
数字的含义。
private static final double MINIMUM_SALARY_FOR_BONUS = 40000;
public boolean eligibleForBonus(){
return salary.getSalary() >= MINIMUM_SALARY_FOR_BONUS;
}