2017-05-07 15 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の中に存在していない作る、ということです。ただし、bの最初のインデックスがcoに追加され、iのインデックスがguに追加されても、毎回そのステートメントは真です。は、私がここでやろうとしています何の首謀

+0

は別に不要ブラケットから、あなたは '((B))あなたは、'は、Arrays.asList(コ).containsでやっていることだと思いますか?これは常に 'false'を返します(' co'は 'ArrayList 'なので 'Arrays.asList(co)'は 'List >'です。 ')。 –

+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コードと同様の試験を行います

メインリストは2が含まれていないので、これは常にそれはあなたがこれをしなかった場合.get(0)としてArrays.asList(co).get(0).contains((b))が最初のサブリストを返しますが、これは唯一のあなたが作成した間違いを訂正し、そううまくいく、それが唯一のサブリスト[1, 2, 3]が含まれてfalseを返します最初の場所で行を書き込むための正しい方法は次のようになります。

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); 
     } 
    } 
} 
関連する問題