2011-07-18 134 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; 
    } 
}