2

我正在研究一种查找给定值的第一个实例并返回其位置的方法。它适用于某些情况,但如果我给它一个 [1,2,3] 数组,并将值设置为 2,它会返回 0,而不是 1。我也不知道为什么。这是代码:

int b = 0;
for(int a = 0; a < values.length; a++) {
    if (values[a] == find){
        b++;
    }
}
return b-1;

提前致谢!

4

3 回答 3

6

这是因为您要返回 b-1。事实上,如果你需要找到相同的实例并返回索引,你甚至不需要变量 b。您可以通过以下方式实现此目的:

for( int a = 0; a < values.length; a++) {

if (values[a] == find){
   return a;
 }
}

return -1 // Notfound
} 

添加return -1未找到值时的行,用作标记值。

于 2012-09-10T12:38:32.473 回答
2

尝试

for( int a = 0; a<values.length; a++) {
    if (values[a] == find){
        return a;
    }
}
于 2012-09-10T12:39:05.337 回答
1

为什么不返回a自己而不是做b-1;

也许您也可以添加一个break语句来停止迭代,因为您只需要第一个实例的位置

    int b=0,result;
    for( int a = 0; a<values.length; a++)
    {

    if (values[a] == find)
     {
       result=a;
       break;
     }
    }

 return result;
于 2012-09-10T12:43:06.123 回答