Создаем массив чисел от 1 до 75, с помощью рандома чисел от 1 до 75 начинаем поиск элемента в массиве. Совпал - удалили. Ищем дальше. Совпал - удалили. Не нашли элемент - ищем снова пока не найдем.
Вот что вышло:
int[]array;
int num = (int)(Math.random()*75+1);//имитируем выпадение числа от 1 до 75
public int[] initArray(){//создаем, инициализируем и заполняем массив цифрами от 1 до 75 включительно
this.array = new int[75];
for (int i = 0; i < array.length; i++){
array[i] = i+1;
}
return array;
}
public static int findNumberInMass(int[] array, int num) {
for (int i = 0; i < array.length; i++) {
if (num == array[i]) {
return i + 1;
}
}
return 0;//вот тут он должен не найти нужный элемент и перезапустить поиск
}
Прошу помощи, а то голова кипит.
Как сделать так, чтоб он находил элемент выпавший в рандоме, искал его в массиве и удалял?
И чтоб он искал совпадения, а если не нашел то перезапускал рандом?
Ответ
Если я правильно понял задачу, то приведённый ниже код иллюстрирует её решение.
class Main {
private final static int[] numbers = initArray();
// Заполнение массива numbers числами от 1 по 75.
private static int[] initArray() {
final int[] array = new int[75];
for (int i = 0; i < array.length; ++i)
array[i] = i + 1;
return array;
}
// Поиск позиции числа n в массиве numbers. Возвращает -1, если число не найдено.
private static int findNumber(final int n) {
for (int i = 0; i < numbers.length; ++i)
if (numbers[i] == n)
return i;
return -1;
}
// Получение следующего случайного числа.
private static int nextRandom() {
while (true) { // В бесконечном цикле...
final int n = (int)(Math.random()*75+1); // ... берём случайное число, ...
final int pos = findNumber(n); // ... и ищем его в массиве numbers.
if (pos >= 0) { // Если число найдено, ...
numbers[pos] = -1; // ... то "удаляем" его...
return n; // ... и завершаем цикл, ...
}
} // ... иначе возвращаемся к началу.
}
public static void main(final String[] args) {
for (int ignored : numbers)
System.out.println(nextRandom());
}
}
Здесь применена небольшая хитрость. Во-первых, если мы не нашли число в массиве, то возвращаем заведомо невалидный индекс (-1). А во-вторых, поскольку удаление элемента массива выполнить без создания нового массива невозможно, то во избежание этой "дорогостоящей" операции мы просто помещаем в массив на место этого числа опять-таки заведомо невалидное значение (-1).
Комментариев нет:
Отправить комментарий