我正在尝试返回从ArrayDeque
中给定数组的第二个元素拉出的字符串我尝试在ToArray之后将其转换为toString和concatenation,但我得到了这个...我需要将它作为String返回
"表达式的类型必须是数组类型,但它已解析为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;
答案 0 :(得分: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++;
}
这样您就不必迭代整个集合。
答案 1 :(得分: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++;
}
}