gpt4 book ai didi

java - Mastermind Java 计数 "whites"

转载 作者:行者123 更新时间:2023-12-01 10:39:00 25 4
gpt4 key购买 nike

我似乎无法弄清楚为什么有时我在 mastermind 中检查白人的代码会将一个值计算两次。我的意思是它同时计算白色和黑色的值。然而,有时它工作得很好,但每次点击时都没有意识到这个错误,我找不到原因。

这是我的方法compare(),它比较我的两个数组guess[]作为玩家输入的值,solution[]作为随机值。

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);

}

这两个数组之前已声明和初始化,当玩家单击代表颜色的按钮时,它们会被填充(请参阅 image )。 test[] 数组也在之前声明过。

最佳答案

如果在正确放置的颜色之前放置了错误的颜色,则会出现问题,如下所示:

           1 2 3 4
Solution : A A B B
Guess : B B B B
  • 1:B 与 3 匹配白色
  • 2:B 与 4 匹配白色
  • 3:B 又配黑 3
  • 4:B 又配黑 4

在对白人进行另一次遍历之前,您可能需要检查黑人。

编辑:新代码应如下所示:

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;
}
}
}
}

关于java - Mastermind Java 计数 "whites",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34521535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com