我如何从数组的末尾开始并按照我的方式开始工作?

时间:2012-12-13 20:50:17

标签: java

我正在尝试生成代码,这些代码将搜索从数组末尾开始的元素并开始工作直到找到我要查找的内容。到目前为止,我有这个,但它似乎没有工作:

     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);
                }           
            }

这很奇怪,因为它从数组的前面开始并一直运行到最后。我很感激所有的帮助!

6 个答案:

答案 0 :(得分:3)

获取索引的快捷方法是执行以下操作:

int idx = randomList.lastIndexOf(findThis);

简单,一行代码将返回给定对象的最后一个索引。如果你想要第一个索引,还有这个:

int idx = randomList.indexOf(findThis);

答案 1 :(得分:2)

请注意:

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

应该是:

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

但是看起来不错;你确定使用IDE正确清理/重建吗?

如果可以,请提供其他上下文,例如代码运行的位置,数据的内容以及预期结果与实际结果的对应关系。

答案 2 :(得分:1)

如果搜索的值在数组中存在多次,您将只会得到不同的答案。 BTW。如果你想检查数组中的第一个元素,你的条件应该是i> = 0。

答案 3 :(得分:0)

如果你有一个数组:

[“狗”,“猫”,“有袋动物”,“胡椒博士”,“百事可乐”]

然后无论您搜索的方向如何,“Dr。Pepper”的索引始终为3。

编辑:我们在这里使用0个索引数组。 :d

答案 4 :(得分:0)

当数组的元素等于您要搜索的元素时,您正在显示ij值,这些值是数组中元素的位置。

您的代码是正确的您只是返回您要搜索的元素的索引,因此从开头或结尾开始它将返回相同的索引(相同的元素位置),除非您有多个相同的元素对于你正在寻找的元素,你会发现差异。

为了了解发生了什么,您应该更改以下代码:

 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);
            }           
        }

答案 5 :(得分: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);
    }                
}