我需要計算代碼中有多少相同的數字與猜測。
如果 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;
uj5u.com熱心網友回復:
正如@Icarus 在評論中提到的那樣,“當您應該將索引與每個索引進行比較時,您正在將索引與索引進行比較”。
public static int getCorrectDigits(int[] code, int[] guess) {
int correctDigits = 0;
if (code.length != guess.length) {
throw new IllegalArgumentException("Different lengths");
}
for (int x = 0; x<code.length; x ){
for (int y = 0; y<guess.length; y ){
if (code[x] == guess[y]){
correctDigits ;
}
}
}
return correctDigits;
}
您還可以將傳統for回圈轉換為增強for回圈。
for (int j : code) {
for (int i : guess) {
if (j == i) {
correctDigits ;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514782.html
標籤:爪哇数组循环排序
