Для моего задания мне нужно написать метод, который возвращает количество коров (см. Определение ниже), найденное между 2 массивами. Если входные массивы имеют разное количество элементов, метод должен вызвать исключение IllegalArgumentException с соответствующим сообщением.
Бык - это обычное число в массивах типа int, найденных в той же позиции, в то время как корова - это обычное число в массивах типа int, найденных в разных местах. Обратите внимание: если число уже является быком, его нельзя считать коровой.
Например, с учетом следующих массивов:
int[] secret = {2, 0, 6, 9};
int[] guessOne = {9, 5, 6, 2};
int[] guessTwo = {2, 0, 6, 2};
int[] guessThree = {1, 2, 3, 4, 5, 6};
int[] guessFour = {1, 3, 4, 4, 0, 5};
1) getNumOfCows(secret, guessOne) returns 2
2) getNumOfCows(secret, guessTwo) returns 0
3) getNumOfCows(secret, guessThree) returns an exception
4) getNumOfCows(guessThree, guessFour) returns 2
Мой метод, показанный ниже, отлично работает для примеров 1 и 3, но есть проблема с примерами 2 и 4, такая, что getNumOfCows (secret, guessTwo) возвращает 1 вместо 0, потому что элемент в secret [0] и guessTwo [3 ] считается коровой. Кто-нибудь может помочь мне исправить мой код?
// A method that gets the number of cows in a guess --- TO BE FIXED
public static int getNumOfCows(int[] secretNumber, int[] guessedNumber) {
// Initialize and declare a variable that acts as a counter
int numberOfCows = 0;
// Initialize and declare an array
int[] verified = new int[secretNumber.length];
if (guessedNumber.length == secretNumber.length) {
// Loop through all the elements of both arrays to see if there is any matching digit
for (int i = 0; i < guessedNumber.length; i++) {
// Check if the digits represent a bull
if (guessedNumber[i] == secretNumber[i]) {
verified[i] = 1;
}
}
for (int i = 0; i < guessedNumber.length; i++) {
// Continue to the next iteration if the digits represent a bull
if (verified[i] == 1) {
continue;
}
else {
for (int j = 0; j < secretNumber.length; j++) {
if (guessedNumber[i] == secretNumber[j] && i != j) {
// Update the variable
numberOfCows++;
verified[i] = 1;
}
}
}
}
}
else {
// Throw an IllegalArgumentException
throw new IllegalArgumentException ("Both array must contain the same number of elements");
}
return numberOfCows;
}