2015-12-13 2 views
0

Я пытаюсь сделать приложение «Secret Friend», у меня есть это:Как я могу избежать один раунд от FOR JAVA

int start2; 
for (int i = 0; i < lista.size(); i++) { 
      start2 = random.nextInt(lista2.size() - 0) + 0; 
      if (lista2.get(start2).equals(lista.get(i))) { 
       break; 
      } else { 
       listaParejas.add(lista.get(i) + "->" + lista2.get(start2)); 
       listaSalidos.add(lista2.get(start2)); 
       lista2.remove(start2); 
       //lista.remove(i); 
      } 
     } 

Lista и lista2 перемешиваются, так что, например, Листа имеет Даниил и lista2 имеет Майкл, так что у listaParejas будет «Daniel-> Michael», но sometima это будет похоже на «Daniel-> Daniel», поэтому в первом я пытаюсь избежать этого, как я могу сделать этот раунд с первым ЕСЛИ не считает int FOR, спасибо, я в отчаянии, потому что я пытался и пытался, и ничего :(

+0

Что должно произойти, если есть совпадение? Выходы программы/перетасовка повторяются/пара игнорируется? Это первое, о чем вы должны думать. – SJuan76

ответ

2

Как вы поживаете в жизни?

Выполняйте случайные назначения, если есть несоответствие, повторите весь процесс. Если вы делаете это для небольших групп друзей, это быстро повторится. Если вы делаете это для больших групп друзей, несоответствие маловероятно.

Другим способ сделать это:

У вас есть Донорские и получатели. Первый доннор случайно получает бумажную полоску с именем своего получателя; если нет рассогласования, вы удаляете как донор, так и получателя (никто не дважды доннор, никто не получает дважды). Если донор (кроме последнего) получает свою собственную бумагу, он выбирает другого случайного получателя (или, может быть, только следующего).

Единственный сложный случай, когда последний донор извлекает последнюю полосу бумаги и находит на ней свое имя. В этом случае вам просто нужно поменять его каким-либо другим донором (если Daniel->Daniel - последняя пара, вы уверены, что Daniel не отображается ни в качестве донора, ни в любом из предыдущих спариваний, поэтому вы конвертируете Daniel->Daniel; John->Michael в Daniel->Michael; John->Daniel).

Вы должны действительно знать, как решить проблему ПЕРЕД НАЧАЛОМ написание первой строки кода; решения не появляются сами по себе, просто используя клавиатуру.

Смежные вопросы