2017-05-07 40 views
0
ArrayList<Integer> co = new ArrayList<Integer>(); 
ArrayList<Integer> gu = new ArrayList<Integer>(); 
System.out.println(code.size()); 
System.out.println(guess1.size()); 
for(int b = 0; b < code.size(); b++) {  
for (int i = 0; i < guess1.size(); i++){ 
    if(guess1.get(i).equals(code.get(b)) && (i == b) && ((Arrays.asList(co).contains((b))))&&(!(Arrays.asList(gu).contains(i)))){ 
     co.add(b); 
     gu.add(i); 
     hintboard.add(Hints.B);`enter code here` 
     System.out.println(guess1); 
     System.out.println(co); 
     System.out.println(gu); 
    }else if(guess1.get(i).equals(code.get(b)) && (!(Arrays.asList(co).contains((b))))&&(!(Arrays.asList(gu).contains(i)))){ 
     co.add(b); 
     gu.add(i); 
     hintboard.add(Hints.W); 
     //System.out.println(hintboard); 

我想在這裏做的是,檢查是否i是在相同的位置等於b,並確保該指數是不存在的cogu的ArrayList 。然而,儘管在co中添加了b的第一個索引,並且i的索引被添加到了gu,但該聲明每次都是正確的。,改善本嵌套循環在策劃更好的工作

+0

除此之外,您怎麼看你用'Arrays.asList(CO)。載有做((B))' ?因爲它總是返回false(因爲'co'是一個'ArrayList ',所以'Arrays.asList(co)'是一個'List >',它不應該包含'i',一個'Integer ')。 –

+0

那麼你的問題到底是什麼呢?有什麼不工作?如果有什麼東西壞了,我們需要知道它是什麼。如果代碼正常工作,那麼堆棧溢出就成爲焦點(雖然可能適合我們的朋友在[代碼評論](https://codereview.stackexchange.com/))。 –

回答

0

林不知道如果我理解你的整個問題,但在這裏不言而喻反正: 你的問題是,你使用:

Arrays.asList(co).contains((b)) 

首先括號圍繞b爲不必要的/沒用,所以你應該刪除他們。 它不起作用的原因是Arrays.asList將創建一個列表,其中包含傳入它的所有元素。預期用途將是這樣的:

Arrays.asList(1, 2, 3); 

將返回列表:

[1, 2, 3] 

你的代碼放在一個列表中的列表,以便輸出將是這樣的:

[[YOUR, LIST, ITEMS]] 

和你的Arrays.asList(co).contains((b))代碼會做類似這樣的psudo碼測試:

[[1, 2, 3]].contains(2) 

這將始終返回false,因爲主列表不包含2它只包含一個子表[1, 2, 3],如果你這樣做Arrays.asList(co).get(0).contains((b)).get(0)將返回第一子列表它的工作,但這只是糾正你創建了一個錯誤,所以寫在首位行正確的方法是:

co.contains(b) 

我不能告訴你,如果你的代碼工作作爲一個整體,此修復程序後,因爲有很多方法可以玩主謀,和我不是確定你玩的規則。此外,我不完全瞭解您的代碼的全部過程,只有概念。反正這裏是你糾正代碼(希望這有助於你理解):

ArrayList<Integer> co = new ArrayList<Integer>(); 
ArrayList<Integer> gu = new ArrayList<Integer>(); 
System.out.println(code.size()); 
System.out.println(guess1.size()); 
for(int b = 0; b < code.size(); b++) { 
    for (int i = 0; i < guess1.size(); i++) { 
     if (guess1.get(i).equals(code.get(b)) && (i == b) && co.contains(b) && !gu.contains(i)) { 
      co.add(b); 
      gu.add(i); 
      hintboard.add(Hints.B); 
      System.out.println(guess1); 
      System.out.println(co); 
      System.out.println(gu); 
     } else if (guess1.get(i).equals(code.get(b)) && !co.contains(b) && !gu.contains(i)) { 
      co.add(b); 
      gu.add(i); 
      hintboard.add(Hints.W); 
      //System.out.println(hintboard); 
     } 
    } 
} 
從不必要的括號