У меня есть массив, который я заполняю 6 случайно сгенерированными числами. Сначала он генерирует случайное число от 1 до 49, а затем сравнивает его с числами в массиве. Если он находит дубликат, он должен снова сгенерировать случайное число, а затем снова выполнить проверку. Если дубликатов нет, то число добавляется в массив.
Вот код:
public void populateArray()
{
for(int i = 0; i < numberLine.length; i++)
{
randomNumber = 1 + randomGen.nextInt(49);
for(int j = 0; j < i; j++)
{
if (numberLine[j] == randomNumber)
{
i--;
}
else
{
continue;
}
}
if(i >= 0)
{
numberLine[i] = randomNumber;
}
else
{
continue;
}
}
Arrays.sort(numberLine);
}
Однако по какой-то причине это все же допускает дублирование, хотя и редко (примерно 1 из 50 массивов), например 6 6 16 24 34 46
. Но когда я пытаюсь продублировать это, вынимая элемент случайного числа и используя число, подобное 30, я не могу воспроизвести результат. Что происходит не так?
j < i
, которая может зацикливаться, потому что и i, и j начинаются с 0, поэтому j не меньше, чем i. - person Arcadian   schedule 21.01.2012