【发布时间】:2022-10-13 02:32:01
【问题描述】:
我需要计算代码中有多少相同的数字与猜测。
如果 code = [1, 2, 5, 6] 并且 guess = [4, 1, 3, 2],它应该返回 2。
我不能直接更改参数数组,所以我首先创建了新数组,排序,然后循环查找两者中有多少相同。问题是它无论如何都会返回 4 。
public static int digits(int[] code, int[] guess) {
int[] sortedCode = new int[code.length];
int[] sortedGuess = new int[guess.length];
int digits = 0;
for (int i = 0; i < code.length; i++) {
sortedCode[i] = code[i];
sortedGuess[i] = guess[i];
}
Arrays.sort(sortedCode);
Arrays.sort(sortedGuess);
for (int i = 0; i < code.length; i++) {
if (sortedGuess[i] == sortedCode[i]) {
digits++;
}
}
return digits;
【问题讨论】:
-
在您的第一个循环中,您将
sortedGuess和sortedCode的内容都设置为code的内容。 -
但是想象一下你解决了这个问题,sortedGuess 是 1234,而 sorted code 是 2345。你会得到正确的答案吗?
-
@tgdavies 糟糕,已修复,谢谢!不,它仍然是错误的。如果是 4,则返回 4,但如果是 3、2、1,则主要返回 0。有时它会返回其他错误,但我无法弄清楚模式。
-
当您应该将索引与数组中的每个索引进行比较时,您正在将索引与索引进行比较
-
@Icarus 我刚刚意识到 sortedGuess[i] == sortedCode[I] 是错误。如何将索引与数组中的每个索引进行比较?