我正试图让特定病人面前的病人数量增加。如何从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;
}
答案 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;
}
}