我正在研究找到给定值的第一个实例并返回其位置的方法。它适用于某些情况,但如果我给它一个[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;
提前致谢!
答案 0 :(得分:6)
因为你回来了b-1。实际上,如果你需要找到相同的实例并返回索引,你甚至不需要变量b。你可以用这样的东西来实现这个目标:
for( int a = 0; a < values.length; a++) {
if (values[a] == find){
return a;
}
}
return -1 // Notfound
}
在找不到值时添加return -1
行,以用作哨兵值。
答案 1 :(得分:2)
尝试
for( int a = 0; a<values.length; a++) {
if (values[a] == find){
return a;
}
}
答案 2 :(得分: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;