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

2 回答 2

0

您已将 Deque 定义为 String[] ,而当您这样做时,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++;
    }

这样您就不必迭代整个集合。

于 2017-02-15T17:21:45.103 回答
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++;
    }
}
于 2017-02-15T17:30:04.560 回答