我想在学生的ArrayList中找到我的名字,然后将我选择的50个选择转移到一个名为myChoices的新数组中(稍后将与其他人进行比较以进行匹配)。 Student类包含一个名称和一个ArrayList选项。这是相关的循环:
int matches[] = new int[students.size()];
int myChoices[] = new int[students.get(0).getChoices().size()];
for(int i = 0; i < students.get(i).getChoices().size(); i++){
if(students.get(i).getName().equals("Garrett M")){
myChoices[i] = students.get(i).getChoices().get(i);
}
}
for(int i = 0; i < myChoices.length; i++){
System.out.println(myChoices[i]);
}
在最后一个循环中,我只是尝试打印我的选择,结果如下所示:
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
(这不是50,但是您可以理解要点-在输出中大约有49个零和1。)实际输出应以1开头,并且是0,1和-1的混合:
1 -1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 -1 0 1 0 0 0 0 1 1 1 1 0 1
知道我哪里可能出问题了吗?
最佳答案
您正在为i
列表和students
列表使用相同的索引students.get(i).getChoices()
。可能是错的。
您可能需要一个嵌套循环:
for(int i = 0; i < students.size(); i++) { // iterate over the students to find the one
// having the required name
if(students.get(i).getName().equals("Garrett M")){
// iterate over the choices of the found student and collect them into the array
for (int j = 0; j < students.get(i).getChoices().size; j++) {
myChoices[j] = students.get(i).getChoices().get(j);
}
break;
}
}