Java新手和我被困在一些看起来非常简单的事情上。我为我正在构建的游戏编写了一个算法,并且使用 TDD,我的所有测试都通过了,但实际游戏没有返回正确的反馈。相反,每当我猜到一个正确的字母时,它都会返回一个“w”并且应该返回一个“b”。
背景 游戏首先生成一个 4 个字符的随机代码。游戏的目的是输入猜测并尝试匹配密码。反馈类应该告诉我我的猜测与代码相比是热的还是冷的。
我将猜测和密码传递给班级并计算反馈。猜测是一个字符串,我使用“拆分”将其转换为字符串数组。密码也是一个字符串数组,我为其随机生成 4 个不同的字符串值。我试图检查猜测和密码中的一个元素是否都是字符串,并且两者都为“真”。
问题 问题是我的完全匹配 if 语句永远不会被执行。我读到您应该改用 equals() 并且也尝试过,但出现错误。
任何人都可以帮忙吗?
这是我的反馈类:公共类反馈{
public String[] guess;
public String[] secretCode;
public String[] feedback;
public String[] get(String[] guess, String[] secretCode) {
this.guess = Arrays.copyOf(guess, guess.length);
this.secretCode = Arrays.copyOf(secretCode, secretCode.length);
feedback = new String[this.secretCode.length];
findExactMatches();
findNearMatches();
findNoMatches();
sortFeedback();
return feedback;
}
public void findExactMatches() {
for (int i = 0; i < guess.length; i++) {
if (guess[i] == secretCode[i]) {
feedback[i] = "b";
guess[i] = "x";
secretCode[i] = "x";
}
}
}
public void findNearMatches() {
for (int i = 0; i < guess.length; i++) {
if ( Arrays.asList(secretCode).contains(guess[i]) && guess[i] != "x" ) {
feedback[i] = "w";
int matched_symbol_index = Arrays.asList(secretCode).indexOf(guess[i]);
secretCode[matched_symbol_index] = "x";
}
}
}
public void findNoMatches() {
for (int i = 0; i < guess.length; i++) {
if ( feedback[i] == null ) {
feedback[i] = " ";
}
}
}
public void sortFeedback() {
Arrays.sort(feedback);
}
}