Для моего назначения мне нужно создать массив целых чисел, содержащих разные 4 цифры, используя Random (seed). Обратите внимание, что метод generateSecretDigits
был запущен в классе, но должен был быть выполнен дома (я не могу вспомнить, какая часть была сделана в классе).
Мой профессор привел нам примеры, чтобы проверить, работает ли наш метод. Хотя моя программа генерирует код из 4 цифр, она не отображает тот же массив целых чисел, что и в приведенных примерах. Может ли кто-нибудь помочь мне найти ошибку?
Приведенные примеры:
- generateSecretDigits (45) возвращает массив {9, 1, 0, 7}
- generateSecretDigits (987) возвращает массив {5, 8, 9, 7}
Мой код:
// Declare the required import statements
import java.util.Random;
public class BullsAndCows {
public static void main (String[] args) {
int[] y = generateSecretDigits(45);
for (int i = 0; i < y.length; i++) {
System.out.print(y[i] + " ");
}
System.out.println();
}
// A method that randomly generates a secret 4-digits number
public static int[] generateSecretDigits(int x) {
/* Declare and initialize an array
* Assign a default value that is not between 0 and 9 inclusively to each element of the array */
int[] secretDigits = new int[4];
secretDigits[0] = 10;
secretDigits[1] = 10;
secretDigits[2] = 10;
secretDigits[3] = 10;
// Generate a number between 0 and 9 inclusively with the provided seed
int seed = x;
Random digit = new Random(seed);
for (int i = 0; i < secretDigits.length; i++) {
int secret = digit.nextInt(9);
// Assign a value to each element of the array
/* The contains() method takes as input an array of integers and a
* specific integer. The method returns true or false depending if an
* element is contained within a given array. Note that I have tested
* the contains() method and it works perfectly */
if (contains(secretDigits, secret) == false) {
secretDigits[i] = secret;
}
else {
i--;
}
}
return secretDigits;
}