Избегайте повторений с помощью цикла в приложении Android - PullRequest
0 голосов
/ 20 мая 2018

У меня есть приложение, в котором я рандомизирую 5 различных целых чисел (первое сгенерируется после запуска действия, остальные 4 - после нажатия кнопки), чтобы использовать их в качестве идентификатора для получения результатов из базы данных SQLite.

Проблема в том, что я не хочу, чтобы эти числа повторялись, поэтому я создал массив и цикл, чтобы избежать этого, но он не работает должным образом, фактически он ничего не делает.Код выглядит следующим образом:

int[] repeatArray = new int[5];
Integer contRep=0;
Integer myInt=0;

randomizeData();

if(contRep==0){
    repeatArray[0]=myInt;
}else{
for (int i=0;i<repeatArray.length;i++){
    while(myInt==repeatArray[i]){
        randomizeData();
                }
            }
        repeatArray[contRep]=myInt;
        }
contRep++;

public void randomizeData(){
        myInt = r.nextInt(27 - 1) + 1;
}

Первый уже создан, поэтому, когда я нажимаю кнопку, contRep равен 1, а первое число уже сохраняется в этом массиве.Обратите внимание, что всякий раз, когда я нажимаю кнопку, выполняется код сверху.Я думаю, что цикл работает нормально, но я все еще иногда получаю дубликаты.Что я делаю не так?

1 Ответ

0 голосов
/ 20 мая 2018

Вы должны поддерживать массив случайных чисел, сгенерированных перед, скажем, ArrayOfPreviousNumbers;так что вы можете проверить, есть ли вновь и случайно сгенерированное число в ArrayOfPreviousNumbers или нет?

Генерация случайных чисел в диапазоне [20, 80], используйте

final int random = new Random().nextInt(61) + 20; // [0, 60] + 20 => [20, 80]

Чтобы проверить, генерируется ли случайное число или нет, посмотрите его в ArrayOfPreviousNumbers с помощью: contains

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...