2

指定された値の最初のインスタンスを見つけてその位置を返すメソッドに取り組んでいます。場合によっては機能しますが、[1,2,3]の配列を指定し、値を2に設定すると、1ではなく0が返されます。理由もわかりません。コードは次のとおりです。

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 に答える