Java 改进此嵌套循环,以便在Mastermind中更好地工作 ArrayList co=new ArrayList(); ArrayList gu=新的ArrayList(); System.out.println(code.size()); System.out.println(guess1.size()); 对于(intb=0;b
我在这里试图做的是,检查Java 改进此嵌套循环,以便在Mastermind中更好地工作 ArrayList co=new ArrayList(); ArrayList gu=新的ArrayList(); System.out.println(code.size()); System.out.println(guess1.size()); 对于(intb=0;b,java,arraylist,Java,Arraylist,我在这里试图做的是,检查I是否等于b在同一位置,并确保索引不存在于co和gu的数组列表中。然而,即使b的第一个索引添加在co和I中,该语句每次都是正确的>被添加到gu我不确定我是否理解了你的整个问题,但不管怎么说,我还是明白了: 您的问题是您使用了: ArrayList<Integer> co = new ArrayList<Integer>(); ArrayList<Integer> gu = new ArrayList<Integer>();
I
是否等于b
在同一位置,并确保索引不存在于co
和gu
的数组列表中。然而,即使b
的第一个索引添加在co
和I
中,该语句每次都是正确的>被添加到gu
我不确定我是否理解了你的整个问题,但不管怎么说,我还是明白了:
您的问题是您使用了:
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);
首先,围绕b的括号是不必要的/无用的,所以你应该删除它们。
它不起作用的原因是Arrays.asList将创建一个包含所有传入元素的列表。预期用途如下:
Arrays.asList(co).contains((b))
[1, 2, 3]
将返回以下列表:
Arrays.asList(1, 2, 3);
您的代码将一个列表放入一个列表中,因此输出如下:
Arrays.asList(co).contains((b))
[1, 2, 3]
您的Arrays.asList(co).contains((b))
代码将执行与此psudo代码类似的测试:
[[YOUR, LIST, ITEMS]]
这将始终返回false,因为主列表不包含2
它只包含一个子列表[1,2,3]
如果您这样做Arrays.asList(co).get(0).contains((b))
as.get(0)
将返回第一个子列表,但这只能纠正您创建的错误,因此在第一个位置写入行的正确方法是:
[[1, 2, 3]].contains(2)
我不能告诉你,在这次修复之后,你的代码是否作为一个整体工作,因为有很多方法可以扮演智囊团,我也不确定你的游戏规则。我也不完全理解你的代码的整个过程,只是概念。无论如何,这是你更正的代码(希望这有助于你理解):
ArrayList co=new ArrayList();
ArrayList gu=新的ArrayList();
System.out.println(code.size());
System.out.println(guess1.size());
对于(intb=0;b
除了不必要的括号外,你认为你在用数组.asList(co).contains((b))
做什么?因为它总是返回false
(因为co
是ArrayList
,所以Arrays.asList(co)
是一个列表
,它不应该包含i
,一个整数
)。那么你的问题到底是什么?有些东西不起作用了吗?如果有些东西坏了,我们需要知道它是什么。如果代码起作用了,那么它就不适合堆栈溢出(尽管可能适合我们的朋友)。