从for循环返回int

时间:2014-10-16 11:17:45

标签: java

我正试图让特定病人面前的病人数量增加。如何从for循环返回int?它一直返回0。

public int pAhead(String name) {
        Patient p;
        int patientsAhead = 0;
        for(int i= 0; i < list.size(); i++)
        {
          p = list.get(i); //get each object from array
          String n = p.getName();
          if(name.equalsIgnoreCase(n))
          {
              //if name passed is equal to object getName, than get the index of that object
              patientsAhead = list.indexOf(p); 
          }
        }
        return patientsAhead;
    }

4 个答案:

答案 0 :(得分:2)

首先,您不需要list.indexOf(p);,因为您已经拥有循环变量i

返回它只是做

if(name.equalsIgnoreCase(n)) {
    return i;
}

请注意,indexOf可能会产生其他内容,具体取决于您实施equals的方式,并且您正在与人员的名称进行比较。

所有这些都说明了,请确保您的列表实际上包含一些元素。

答案 1 :(得分:1)

尝试返回i的值。它将为您提供与传递的名称匹配的值。

public int pAhead(String name) {

    Patient p;
    int patientsAhead = 0;
    for(int i= 0; i < list.size(); i++)
    {
      p = list.get(i); //get each object from array
      String n = p.getName();
      if(name.equalsIgnoreCase(n))
      {
          //if name passed is equal to object getName, than increase your counter 
          patientsAhead = i;  
      }
    }
    return patientsAhead;
}

答案 2 :(得分:0)

如果我理解你的问题就是当你看到你感兴趣的号码时添加一个break语句,你所要做的就是。

所以:

public int pAhead(String name) {
        Patient p;
        int patientsAhead = 0;
        for(int i= 0; i < list.size(); i++)
        {
          p = list.get(i); //get each object from array
          String n = p.getName();
          if(name.equalsIgnoreCase(n))
          {
              //if name passed is equal to object getName, than increase your counter 
              patientsAhead = i;
              break;
          }
        }
        return list.size() - patientsAhead;
    }

答案 3 :(得分:0)

这个答案假定list变量是一个包含患者的列表,您想要的数字,患者前面的患者,是您正在寻找的患者的索引。

如果您要查找Patient对象,那么只需执行pAhead = list.indexOf(patient)就可以在不使用for循环的情况下为您提供相同的结果。只要确保检查结果是否为阴性,那么这意味着您正在寻找的患者不在列表中。

此解决方案取决于定义Person.equal()方法。有些IDE可以为您生成它。

如果您没有对象或者您不能(或者不想)更改equal()方法,您可以像循环一样循环并在循环内循环return i ,像其他答案一样建议:

for (int i=0; i<=list.size(); i++) {
    if (name.equalsIgnoreCase(list.get(i).getName())) {
        return i;
    }
}