2017-02-15 75 views
0

我試圖返回一個字符串從給定數組的第二個元素的拉ArrayDeque數組轉換爲字符串

我試圖ToArray的後澆鑄和toString和連接的內部,但我得到這個...我需要把它作爲字符串返回

「之類的表達必須是一個數組類型,但它解析爲字符串」

ArrayDeque<String[]> bindings_and_var = new ArrayDeque(); 

public ArrayDeque<String[]> pushBindings(String var, String bindings) { 
    //var first element, bindings 2nd 
    String[] this_bindings_and_var = new String[2]; 

    bindings_and_var.addLast(this_bindings_and_var); 
    return bindings_and_var; 
} 

public ArrayDeque<String[]> bindingsVal() { 

    return bindings_and_var; 
} 

public String lookup(int index) { 
    String[] array = (String[]) bindings_and_var.toArray(); 

    //PROBLEM AREA vvv 
    String s = "" + array[index][1]; 


    return s; 

回答

0

你定義了你的Deque爲字符串[]而當你正在做bindings_and_var.toArray();你會收到對象每個對象都以String數組的形式排列。嘗試,

Object[] array = (String[]) bindings_and_var.toArray(); 

    Object obj = array[index]; 
    String[] myArray = (String[])obj; 
    String s = "" + myArray[1]; 

或者

int i = 0; 
    for (String[] s : bindings_and_var) { 
     if (i == index) { 
      return s[1]; 
     } 
     i++; 
    } 

,這樣你就不必遍歷整個集合。

0

lookup方法應該是這樣的:

public String lookup(int index) 
{ 
    int counter = 0; 
    for (Iterator<String[]> itr = bindings_and_var.iterator(); itr.hasNext();) 
    { 
     String[] t = itr.next(); 

     if (counter == index) 
     { 
      return t[1]; 
     } 

     counter++; 
    } 
}