我一直在研究这段代码。这是我想要发生的伪代码:
a.检查sections(这是一个列表)大小是否为
0。b.如果sections大小为0,则通过调用sections.add(newSection)自动将学生注册到该部分
c.else如果sections大小不为零,请检查d.如果没有冲突
,则通过调用sections.add(newSection)
e.else将学生注册到该部分
Java 不断向我抛出“java.util.concurrentmodificationexception”错误。我知道,我不应该在遍历列表时更改 ArrayList 的大小,因为它会修改迭代器。还有其他方法可以解决这个问题吗?:D
非常感谢。非常感谢您的帮助。:)
public String enrollsTo(Section newSection){
StringBuffer result = new StringBuffer();
String resultNegative = "Failed to enroll in this section.";
String resultPositive = "Successfully enrolled in section: " + newSection.getSectionName() + ".";
int previousSectionSize = sections.size();
if(this.sections.isEmpty()){
this.sections.add(newSection);
result.append(resultPositive);
}else{
for(Iterator<Section> iterator = sections.iterator(); iterator.hasNext() ; ){
Section thisSection = iterator.next();
if(thisSection.conflictsDayWith(newSection)==false &&
thisSection.conflictsTimeWith(newSection)==false){
this.sections.add(newSection); //<-- i believe the problem lies here.
result.append(resultPositive);
}
}
}
// if(this.sections.size() == previousSectionSize){
// result.append(resultNegative);
// }
return result.toString();
}