复杂数组任务

时间:2014-09-04 15:52:09

标签: java arrays

我正在尝试用java解决数组中的复杂问题。

以字符串开头。

String text = "I am the best Programmmer in the world the best";

String [] arraytext = text.split("");

接下来是迭代数组并检查记录

for (String array1 : arraytext) {
       System.out.println(array1);
            }

这有效,我有我的数组

我现在遇到的问题是检查数组中的记录并获取数组的索引。

我的意思是

for (String array1 : arraytext) {
    if (array1.equalsIgnoreCase("best")){
            // get the index of this array

            }
        }

我需要得到该数组的索引。它非常复杂,因为我实际上需要最好的第二个实例的索引。

并从for循环中获取此索引的结果。

非常感谢任何帮助

4 个答案:

答案 0 :(得分:3)

首先要正确拆分字符串,您可能希望拆分" "或使用正则表达式来检查更广泛的空格列表。

然后你需要做的就是创建一个方法来进行搜索:

int findIndex(String str, int start, String[] array) {
   for (int i=start;i<array.length;i++) {
      if (array[i].equals(str)) {
          return i;
      }
   }
   return -1;
}

然后获得第一个:

index = findIndex("test", 0, array);

对于你做的第二次:

index = findIndex("test", index+1, array);

如果未找到任何内容,那么index将为-1。

答案 1 :(得分:0)

如何更改

中的for循环
for(int i = 0; i < arraytext.length ; i++){
    if(arrayText[i].equalsIgnoreCase("best"))
        System.out.println(i);
}

答案 2 :(得分:0)

Java的Foreach语法只是围绕for循环的语法糖。如果要查找最后一个匹配元素,最简单的方法是自己手动编写for循环,但向后迭代。这样的事情。

for (int i = arraytext.length - 1; i >= 0; i--)
{
    if (arraytext[i].equalsIgnoreCase("best"))
    {
        // i is the array index you're looking for, do something with it
        break; // or return if this is a method
    }
}

答案 3 :(得分:0)

您可以使用ArrayUtils:

import org.apache.commons.lang.ArrayUtils;
int index = ArrayUtils.lastIndexOf(arraytext, "best");