指定された値の最初のインスタンスを見つけてその位置を返すメソッドに取り組んでいます。場合によっては機能しますが、[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;
前もって感謝します!
それはあなたがb-1を返しているからです。実際、同じインスタンスを見つけてインデックスを返す必要がある場合は、変数bも必要ありません。あなたはこのようなものでこれを達成することができます:
for( int a = 0; a < values.length; a++) {
if (values[a] == find){
return a;
}
}
return -1 // Notfound
}
return -1
値が見つからない場合の行を追加して、番兵値として使用します。
試す
for( int a = 0; a<values.length; a++) {
if (values[a] == find){
return a;
}
}
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;