我正在尝试使应用程序“秘密朋友”,我有这个: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被改组,因此例如lista具有Daniel和lista2具有Michael,因此listaParejas将具有“ Daniel-> Michael”,但是有些时候它就像“ Daniel-> Daniel”,所以在第一个ir中,我尝试为了避免这种情况,我如何才能通过第一个IF进行这样的回合就不算int FOR了,谢谢,我很绝望,因为我已经尝试过,并且一无所获:( 最佳答案 您在现实生活中的表现如何?如果不匹配,请随机分配整个过程。如果您是为一小群朋友这样做的话,重复的速度很快。如果您是为大批朋友做的,则极不可能出现不匹配的情况。另一种方法是:您有捐赠者和接受者。第一个捐赠者随机得到一张带有接收者名字的纸条。如果没有不匹配的情况,您将退还捐赠人和接受人(没人是捐赠人的两次,没有人是捐赠人的两次)。如果捐赠者(不是最后一个捐赠者)得到了自己的论文,他会选择另一个随机的接收者(或者可能只是下一个接收者)。唯一复杂的情况是,当最后的捐赠者取回最后的纸条并在上面找到自己的名字时。在这种情况下,您只需将其与任何其他donnor交换(如果Daniel->Daniel是最后一对,则确保Daniel在先前的任何配对中都不会同时显示为donnor或收件人,因此您可以转换在Daniel->Daniel; John->Michael中)。在编写第一行代码之前,您应该真的知道如何解决该问题。解决方案本身并不仅仅通过使用键盘即可出现。
08-25 13:56