我有一个arrayList私有ArrayList模块;我想要存储模块对象,然后我想检查是否有一个与插入的模块相同的moduleNummer的对象,这部分工作,当我只输入相同的moduleNummer它工作正常,当我输入第二个(不同)数字它将添加一个带有数字2的新模块,但是当我想在数字2的模块中添加另一个星期它将无法工作,我不明白为什么会发生这种情况
public void addModule(int moduleNummer, int weekNummer, int weekUren) throws ParseException {
if(Modules.size()==0) {
System.out.print("array size == 0");
Modules.add(new Module(moduleNummer));
Modules.get(0).addWeek(new ModuleWeek(weekNummer,weekUren));
return;
}
else{
for (int i = 0; i < Modules.size(); i++) {
System.out.print("entered loop \n");
System.out.print("arraySize:"+ Modules.size() + "\n");
System.out.print("selected array:"+Modules.get(i).getModuleNummer() + "\n");
System.out.print("inserted:"+moduleNummer + "\n");
int inArrayModuleNummer = Modules.get(i).getModuleNummer();
if (inArrayModuleNummer == moduleNummer ) {
System.out.print("inserted Module number excists \n");
Modules.get(i).addWeek(new ModuleWeek(weekNummer, weekUren));
return;
}
else {
System.out.print("inserted module number does not excist and the arraySize != 0");
Module m = new Module(moduleNummer);
m.addWeek(new ModuleWeek(weekNummer, weekUren));
Modules.add(m);
return;
}
}
}
}
答案 0 :(得分:0)
我认为你在循环中检查的逻辑是不正确的。
for (int i = 0; i < Modules.size(); i++) {
...
if (inArrayModuleNummer == moduleNummer ) {
System.out.print("inserted Module number excists \n");
Modules.get(i).addWeek(new ModuleWeek(weekNummer, weekUren));
return;
}
else {
System.out.print("inserted module number does not exist and the arraySize != 0");
Module m = new Module(moduleNummer);
m.addWeek(new ModuleWeek(weekNummer, weekUren));
Modules.add(m);
return;
}
}
此处,如果Modules
的第一个模块不匹配,您认为第一次迭代后模块编号不会在Modules
中退出。只有在遍历所有元素时才应该结束这一点。
迭代后应移动else
部分中的代码。不再需要return
。
for (int i = 0; i < Modules.size(); i++) {
...
if (inArrayModuleNummer == moduleNummer ) {
System.out.print("inserted Module number excists \n");
Modules.get(i).addWeek(new ModuleWeek(weekNummer, weekUren));
return;
}
}
// if you are here, the module number has no matching
System.out.print("inserted module number does not excist and the arraySize != 0");
Module m = new Module(moduleNummer);
m.addWeek(new ModuleWeek(weekNummer, weekUren));
Modules.add(m);