我有一个 arrayList 私有(private) 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;
}
}
}
}
最佳答案
我认为您检查循环的逻辑不正确。
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
部分中的代码。不再需要返回
。
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);
关于java - 检查对象是否包含数组列表中的值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551321/