我有一个列表名称为就业的对象列表,它有' n'称为就业的对象数。每个就业对象都有一个名为serialnumber的变量。现在我需要将每个对象的序列号增加11。
这是代码
for(Employment employment:employments.getEmployemnts()){
if(employment="GENERAL_MANAGER"){
employement.setSerialNumberForGenManager()
}else{
employment.setSerialNumberForOthers()
}
在employment
班级内:
public static employemntIndex=11;
public employemnt setSerialNumberForGenManager(){
this.serialNumber = 0;
}
public employemnt setSerialNumberForOthers(){
this.serialNumber = employemntIndex+serialNumber;
}
现在,我无法将值增加11.每个对象的结果总是只有11个。它没有增加。
答案 0 :(得分:1)
这可能是因为你的String比较。字符串比较应使用Object#equals(Object)
方法(而不是==
);
if (yourString.equals("COMPARISON STRING")) //do stuff
这是因为String是一个实例(碰巧包含文本),在这种情况下==
运算符只测试引用,而不是实例本身是否包含相同的文本。
此外,=
是一个赋值运算符,==
应该用于大多数比较(除了'特殊情况',比如比较字符串)。
下一个问题是你没有携带价值(如你所说)。解决这个问题;
public static employemntIndex = 11;
//Increase the employment index for each GENERAL_MANAGER
public employemnt setSerialNumberForOthers(){
this.serialNumber = employmentIndex;
employmentIndex += 11;
}
答案 1 :(得分:0)
试试这个
public static Integer employemntIndex = 0;
public employemnt setSerialNumberForOthers(){
this.serialNumber = employemntIndex;
employemntIndex += 11;
}
答案 2 :(得分:0)
两个可能的错误:
您正在使用所谓的“增强型for循环”。
您无法以该方式编辑集合的元素,因为该循环是只读的。
要编辑元素,必须使用带有显式迭代索引或迭代器的for循环。
您似乎在比较引用(内存地址与不太可能与内存地址对应的String。
employment="GENERAL_MANAGER"
你可能忘了调用像
这样的getter方法employment.getRole().equals("GENERAL_MANAGER")
所以它会是(如果不支持size()方法,你应该使用array.length)
for(int i = 0; i < employments.getEmployemnts().size(); i++) {
if(employments[i].yourGetter().equals("GENERAL_MANAGER")){
employements[i].setSerialNumberForGenManager()
}else{
employments[i].setSerialNumberForOthers()
}
或者,如果您的集合实现了List接口
Iterator iter = employments.getEmployments().iterator();
while (iter.hasNext()){
Employment employment = iter.next();
if(employment.yourGetter().equals("GENERAL_MANAGER")){
employement.setSerialNumberForGenManager()
}else{
employment.setSerialNumberForOthers()
}
}
希望有所帮助
编辑: 由于KookieMonster注意到你在IF条件下使用赋值运算符,你应该使用equals方法