我有这段代码:
static ArrayList<Integer> output_list = new ArrayList<Integer>();
static ArrayList<Integer> pair_list = new ArrayList<Integer>();
for (Iterator it=output_list.iterator(); it.hasNext();)
{
int pair_test = (int)output_list.next();
for (int i=0; i<pair_list.length; i++)
{
if(!pair_list[i]==0)
{
if (pair_list[i]==pair_test[i])
{
boolean check;
check=true;
}
}
}
}
但是我在编译时遇到了“无法找到符号”的错误。
symbol : variable length
location: class java.util.ArrayList<java.lang.Integer>
for (int i=0; i<pair_list.length; i++)
^
Prior.java:79: array required, but java.util.ArrayList<java.lang.Integer> found
if(!pair_list[i]==0)
^
Prior.java:79: incomparable types: boolean and int
if(!pair_list[i]==0)
^
Prior.java:81: array required, but java.util.ArrayList<java.lang.Integer> found
if (pair_list[i]==pair_test[i])
^
Prior.java:81: array required, but int found
if (pair_list[i]==pair_test[i])
^
任何人都可以帮助我为什么会收到此错误?
答案 0 :(得分:5)
使用pair_list.size()
代替pair_list.length
。 pair_list
是List而不是数组。我建议也查看the for-each loop语法。
这个pair_list[i]
也不会编译。它是数组语法。请改用pair_list.get(i)
。
答案 1 :(得分:1)
这段代码有一些工作
.size()
而[i]
变为.get(i)
int pair_test = (int)output_list.next();
但是你说pair_test[i]
,有些事情是错误的...... if(!pair_list[i]==0)
应该成为if(!(pair_list[i]==0))
这使我们成为第一次迭代:
static List<Integer> output_list = new ArrayList<Integer>();
static List<Integer> pair_list = new ArrayList<Integer>();
for (Integer pair_test: output_list) {
for (int i=0; i<pair_list.size(); i++) {
if(!(pair_list.get(i)==0)) {
// i suppose that this is what you mean
if (pair_list.get(i)==pair_test) {
boolean check;
check=true;
// this is pretty useless as it lives very locally and does
// absolutely nothing anywhere else in the program....
}
}
}
}
}
现在,您可以像
那样重写内循环for (Integer pair_list_element : pair_list) {
if ((pair_list_element != 0) && (pair_list_element==pair_test)) {
boolean check = true;
// and then probably, because your condition was satisfied
do_something_useful();
// and get out
break;
}
}