2011-07-18 131 views
0

我有这样的代码:错误代码,无法找到符号

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]) 
                   ^

任何人都可以帮助我,为什么我得到这个错误?

回答

5

使用pair_list.size()而不是pair_list.lengthpair_list是一个List而不是一个数组。我建议你也看看the for-each loop的语法。 这pair_list[i]也不会编译。它是数组语法。改为使用pair_list.get(i)

+0

极大怎么样output_list.next()!? – Roubie

+0

没关系,但实际上每个循环都完全一样 – zacheusz

1

有一个关于这个代码

  • 作为zacheusz已经说明了一些工作,一个List是不是一个数组,我认为这是更好地留在列表中,但是这意味着,意味着。长度成为.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; 
    } 
}