在列表中将每个对象的值增加11

时间:2016-04-12 04:37:48

标签: java object operators

我有一个列表名称为就业的对象列表,它有' 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个。它没有增加。

3 个答案:

答案 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)

两个可能的错误:

  1. 您正在使用所谓的“增强型for循环”。

    您无法以该方式编辑集合的元素,因为该循环是只读的。

    要编辑元素,必须使用带有显式迭代索引或迭代器的for循环。

  2. 您似乎在比较引用(内存地址与不太可能与内存地址对应的String。

    employment="GENERAL_MANAGER"
    

    你可能忘了调用像

    这样的getter方法
    employment.getRole().equals("GENERAL_MANAGER")
    
  3. 所以它会是(如果不支持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方法