2017-02-15 6 views
0

ich einen String zurück bin versucht, zog aus dem zweiten Element eines bestimmten Array innerhalb eines ArrayDequeConvert Arrays innerhalb ArrayDeque zu String

Ich versuchte es und toString und Verkettung nach ToArray Casting, aber ich dieses ... ich muss es als

String zurückgeben „die Art des Ausdrucks muss ein Array-Typ sein, aber es gelöst String“

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; 

Antwort

0

Sie definiert haben Ihre Deque als String [], während, wenn Sie tun, bindings_and_var.toArray(); würden Sie ein Objekt erhalten Array mit jedem Objekt als String-Array. Versuchen Sie,

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

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

Oder

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

so, dass Sie nicht die ganze Kollektion laufen müssen.

0

Ihre lookup Methode sollte wie folgt aussehen:

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