Это кусок кода в Java, я пытаюсь вывести случайные числа из массива задач и убедиться, что ни один из выходов не повторяется, я помещаю их через некоторые другие циклы (скажем, у вас есть задача «шестое задание с произвольной задачей» [5] », она проходит цикл for, который будет проверять его против каждого элемента« tCheck », и хотя задача [5] равна одному из элементов tCheck, она будет продолжайте искать другой вариант, прежде чем возвращаться к началу проверки forloop ... Элементы tCheck [i] изменяются в конце каждого полного цикла вывода на новое случайное число, установленное для элемента задачи).Java - Неправильная проверка для цикла
ПРОБЛЕМА заключается в том, что, несмотря на то, что, предположительно, проверяя каждую новую случайную задачу на все элементы tCheck, иногда (не всегда) повторяются выходные задания (что означает, вместо того, чтобы выставлять слова 2,3,6,1,8,7 , 5,4, он выведет что-то вроде 2,3,2,1,8,7,5,4, где «2» повторяется ... НЕ всегда в одном и том же месте, то есть иногда это может закончиться так тоже, где «4» повторяется: 3,1,4,5,4,6,7,8)
int num = console.nextInt();
String[] tasks = {"1","2","3","4","5","6","7","8"};
String[] tCheck = {"","","","","","","",""};
for(int i = 0; i<= (num-1); i++){
int tNum = rand.nextInt(8);
for(int j = 0; j <=7; j++){
if(tasks[tNum].equals(tCheck[j])){
while(tasks[tNum].equals(tCheck[j])){
tNum = rand.nextInt(8);
}
j = 0;
}
}
tCheck[i] = tasks[tNum];
System.out.println(tasks[tNum]+" & "+tCheck[i]);
}
ни один из других кусков кода не влияет на эту часть (кроме настройки Random INT в , Сканеры и т. Д., Все это сделано правильно). Я просто хочу, чтобы он печатал каждый номер случайным образом и только один раз. никогда не повторять. Как мне это сделать?
Заранее спасибо.
Возможный дубликат [Генерация уникальных случайных чисел в Java] (http://stackoverflow.com/questions/8115722/generating-unique-random-numbers- in-java) – SomeJavaGuy
Почему вы не используете List with contains method –
Почему бы вам просто не вставлять новые числа в 'HashSet' вместо всех этих циклов? Каждый раз, когда вы создаете новый, вы можете просто проверить, существует ли он в 'HashSet' в' O (1) ', и если это так, вы можете игнорировать его и генерировать новый. – Lefteris008