我似乎无法弄清楚为什么有时我检查mastermind中白人的代码会计算两次值。我的意思是它计算白色和黑色的值。但是,有时它完美无缺,每次点击都无法实现错误,我无法找到原因。
这是我的方法比较(),它比较我的两个数组guess []为玩家输入的值和解决[]为随机值。
public void comparaison(){
white = 0;
black = 0;
test = new boolean[columns];
for(int x = 0 ; x < test.length ; x++){
test[x] = false;
}
for (int i =0 ; i<columns; i++){
System.out.println(solution[i]);
if (solution[i] == guess[i]){
test[i] = true;
black++;
}else{
for (int j=0;j < columns;j++){
if(!test[j] && j!=i && guess[j] == solution[i]){
white++;
test[j]=true;
break;
}
}
}
}
System.out.println("black"+black);
System.out.println("white"+white);
}
之前声明并初始化了2个数组,当玩家点击代表颜色的按钮时,它们被填充(参见image)。 test []数组也在之前声明。
答案 0 :(得分:1)
如果在放置好的颜色之前放置了错误的颜色,则会出现此问题,例如:
1 2 3 4
Solution : A A B B
Guess : B B B B
在为白人做另一次传球之前,你可能需要检查黑人。
修改:新代码应如下所示:
for (int i=0 ; i<columns ; i++) {
if (solution[i] == guess[i]) {
test[i] = true;
black++;
}
}
for (int i=0 ; i<columns ; i++) {
if (solution[i] != guess[i]) {
for (int j=0 ; j<columns ; j++) {
if(!test[j] && j!=i && guess[j] == solution[i]) {
test[j] = true;
white++;
break;
}
}
}
}