0

配列の末尾から始まる要素を検索し、探しているものが見つかるまで先頭に向かって動作するコードを作成しようとしています。これまでのところ、私はこれを持っていますが、機能していないようです:

     for (int i = randomList.length - 1; i > 0; i--)
            {
             if (randomList[i].equals(findThis))
                {
                    System.out.println("The index of what you're looking for in the array is: " + i);

                }                
            }

これをコンパイルして実行すると、次と同じ答えが得られます。

     for (int j = 0; j < randomList.length; j++)
            {
            if (randomList[j].equals(findThis))
                {
                    System.out.println("What you're looking for is located at this index: " + j);
                }           
            }

これは、配列の先頭から始まり、最後まで進んでいるため、奇妙です。私はすべての助けに感謝しています!

4

6 に答える 6

3

インデックスを取得する簡単な方法は、次のようにすることです。

int idx = randomList.lastIndexOf(findThis);

指定されたオブジェクトの最後のインデックスを返す単純な 1 行のコード。最初のインデックスが必要な場合は、これもあります。

int idx = randomList.indexOf(findThis);
于 2012-12-13T20:59:14.160 に答える
2

ご了承ください:

for (int i = randomList.length - 1; i > 0; i--)

次のようにする必要があります。

for (int i = randomList.length - 1; i >= 0; i--)

しかし、それ以外は正しいように見えます。IDEで正しくクリーニング/再構築していますか?

可能であれば、コードが実行されている場所、データの内容、期待される結果と実際の結果など、追加のコンテキストを提供してください。

于 2012-12-13T20:52:53.320 に答える
1

検索された値が配列に複数回存在する場合にのみ、異なる回答が得られます。ところで。配列の最初の要素をチェックする場合は、条件をi>=0にする必要があります。

于 2012-12-13T20:53:45.520 に答える
0

次の配列がある場合:

[「犬」、「猫」、「有袋類」、「ドクターペッパー」、「ペプシ」]

その場合、「ドクターペッパー」のインデックスは、検索する方向に関係なく、常に3になります。

編集:ここでは0個のインデックス付き配列を使用します。:D

于 2012-12-13T20:53:51.663 に答える
0

配列の要素が探している要素と等しい場合、配列内の要素の位置である値を表示iしています。j

コードは正しいので、検索している要素のインデックスを返すだけなので、要素と等しい要素が複数ない限り、最初または最後から同じインデックス(同じ要素の位置)が返されます。あなたが探しているなら、あなたは違いに気付くでしょう。

何が起こっているのかを理解するには、以下のようにコードを変更する必要があります。

 for (int i = randomList.length - 1; i > 0; i--)
        {
         System.out.println("Actual index =" + i);
         if (randomList[i].equals(findThis))
            {
                System.out.println("The index of what you're looking for in the array is: " + i);

            }                
        }

これをコンパイルして実行すると、次と同じ答えが生成されます。

 for (int j = 0; j < randomList.length; j++)
        {
         System.out.println("Actual index =" + j);
         if (randomList[j].equals(findThis))
            {
                System.out.println("What you're looking for is located at this index: " + j);
            }           
        }
于 2012-12-13T20:54:54.510 に答える
0

見つかった要素のインデックスを返します。これはどちらの方向でも同じになります (つまりarray[4]、検索方法に関係なく同じになります)。

逆方向のカウントが必要な場合は、次のようにします。

for (int i = 0; i < randomList.length; i++)
{
  if (randomList[randomList.length - i - 1].equals(findThis))
    {
      System.out.println("The count from the back of the array is: " + i);
    }                
}
于 2012-12-13T20:56:04.327 に答える