我有一份上学的任务,我需要制作一个程序,自动让夫妻上学。在这种情况下,有6节课,每节课与不同的人合作。因此,在第1周,与b人合作,接下来几周他不能与人合作。
我已经编写了一些代码将这个类拆分为2,但我不知道如何每周更换这对夫妇。
这是我已经拥有的代码(抱歉,它不是英文):
public void maakKoppels() {
if (leerlingenLijst.size() % 2 == 1) {
leerlingenLijst.add(new Leerling("Bye")); // if you have an odd number of students it adds the "Bye" student
}
for (int i = 1; i <= 6; i++) {
maakKoppels(i, leerlingenLijst); //its needed for 6 lessons so it does it 6 times
}
}
public void maakKoppels(int weekNum, ArrayList<Leerling> leerlingenLijst) {
int midden = leerlingenLijst.size() / 2; //split the arraylist in 2
ArrayList lijst1 = new ArrayList();
for (int j = 0; j < midden; j++) {
lijst1.add(leerlingenLijst.get(j));
}
ArrayList lijst2 = new ArrayList();
for (int j = leerlingenLijst.size() - 1; j >= midden; j--) {
lijst2.add(leerlingenLijst.get(j));
}
practica.add(new Practicum(weekNum, lijst1, lijst2)); // here it fills the lessons with the 2 lists. weekNum is the lesson number and the name on lijst1 at index 0 couples with the name on lijst2 at index zero
}
答案 0 :(得分:0)
最简单的方法...从第一个arrayList中的第一个元素开始,然后对第二个arrayList进行洗牌并选择第一个元素..在arylist1中的第二个 - &gt;在arraylist2中的第二个..依此类推..现在将此数据添加为关键字地图中的值对..下次你创建情侣时,再次对第二个arraylist进行洗牌..现在为每对情侣制作,首先检查来自第二个arraylist的人是否存在地图中的同一个键。如果不是,请将值添加到List(地图的值),否则再次洗牌并尝试..您将需要一个键,在地图中列出...
Map<String,List> hm = new HashMap<String, List>();
List<String> l = new ArrayList<String>();
Collections.shuffle(arrayList2);
现在轮到你实现逻辑..对不起,我不能给你代码......
答案 1 :(得分:0)
将课程分成两部分是一个好的开始。现在你可以rotate list1同时保持list2不变并配对{list1.get(1),list2.get(1)},{list1.get(2),list2.get(2)}等。将list1旋转一周(一周)并重新执行。
如果您有超过12名学生将在六周内工作。通过这种方法,同一列表中的学生永远不可能是一对。
答案 2 :(得分:0)
解决方法如下......
这将确保你每周都有不同的情侣。