2014-05-05 121 views
-1

我正在嘗試查找數組的索引。我的陣列如下:查找數組索引

char[] closingBrackets = { ')', ']', '}', '>' }; 

當我這樣做:

int i = openingBrackets.indexOf(']'); 

int i = openingBrackets.indexOf(]); 

Eclipse中給我的錯誤,那麼,建議我將其更改爲openingBrackets.length這是不我想要的是。

我想在這種情況下我保持值1,因爲它是數組中的第二項。我哪裏錯了?還是有另一個圖書館,我應該用它來找到這個?

+5

您的變量名爲'closingBrackets'。嘗試'int i = closingBrackets.indexOf(']');' – Aiias

+0

對不起,我的項目中有另一個名爲closingBrackets的數組,並且它不適用於任何數組 – user3602599

回答

2

indexOf是一個字符串的方法。看看那裏的元素是,通過數組循環,檢查每個值,看它是否匹配,當你得到它,返回(整型)

int index; 
for(int i = 0; i < array.length; i++) { 
    if(array[i] == ']') { 
     index = i; 
    } 
} 
1

陣列不環路的跟蹤數量有方法。你可以使用

int index = Arrays.asList(closingBrackets).indexOf(']'); 

提供closingBrackets被定義爲Character陣列

Character[] closingBrackets = { ')', ']', '}', '>' }; 
+0

當我使用此代碼時,索引總是-1? –

+1

注意答案中的最後一行 – Reimeus

0

首先,你不能叫的indexOf陣列上。我認爲你對ArrayList感到困惑。爲了找到一個數組對象的索引,讓這樣的方法:(這可能需要你做它的字符[])

public static <E> int indexOf(E[] array, E item) { 
    for (int i = 0; i < array.length; i++) 
     if(array[i].equals(item)) 
      return i; 
    throw new InvalidParameterException("Item not in array."); 
} 

或者你可以在數組轉換到一個ArrayList <性格>和調用indexOf(int)方法。