Java逻辑问题

时间:2012-09-10 12:36:08

标签: java loops

我正在研究找到给定值的第一个实例并返回其位置的方法。它适用于某些情况,但如果我给它一个[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;

提前致谢!

3 个答案:

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