2014-09-04 38 views
0

我想解決一個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 

      } 
     } 

我需要得到該數組的索引d。它非常複雜,因爲我實際上需要最好的第二個實例的索引。

並從for循環中獲取此索引的結果。

真的會感謝所有幫助

+0

所以基本上你只是想在二審指數? – user2548635 2014-09-04 15:55:42

+0

你需要傳遞一個字符串到分隔符(這是字符串將被拆分)的split()方法 – steven35 2014-09-04 15:56:01

回答

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

如果沒有發現任何內容,則索引將爲-1。

+0

不錯,你是一個真正的..感謝一堆 – 2014-09-04 16:33:46

0

怎麼樣在

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

謝謝這打印出索引3的結果和9,現在請我所需要的是這9次的結果,這是最好的第二次。我需要這個9 for the loop – 2014-09-04 16:19:57

+0

你可以投入一個新變量BEFORE for循環,比如'int index = 0;'然後是for循環,然後代替'System.out.println(i)'你可以寫'index = i;'然後當你在循環之外時,你可以訪問包含被搜索單詞索引的i – Lucarnosky 2014-09-04 16:22:01

0

Java的語法的foreach改變for循環圍繞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 
    } 
} 
0

您可以使用ArrayUtils:

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