Java 检查arraylist中的对象是否包含值';行不通

Java 检查arraylist中的对象是否包含值';行不通,java,arraylist,Java,Arraylist,我有一个arrayList私有arrayList模块;在我想存储模块对象的地方,我想检查是否有一个对象具有与插入模块相同的moduleNummer,这部分起作用,当我只输入相同的moduleNummer时,它工作正常,当我输入第二个(不同)数字时,它将添加一个具有数字2的新模块,但是,当我想在第二个模块中再增加一周时,它将不起作用,我不明白为什么会发生这种情况 public void addModule(int moduleNummer, int weekNummer, int weekUren

我有一个arrayList私有arrayList模块;在我想存储模块对象的地方,我想检查是否有一个对象具有与插入模块相同的moduleNummer,这部分起作用,当我只输入相同的moduleNummer时,它工作正常,当我输入第二个(不同)数字时,它将添加一个具有数字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;
            }
        }
    }
}
public void addModule(int modulenumer、int weeknumer、int weekUren)引发异常{
if(Modules.size()==0){
系统输出打印(“数组大小==0”);
Modules.add(新模块(modulenumer));
Modules.get(0).addWeek(新ModuleWeek(weekNummer,weekUren));
返回;
}
否则{
对于(int i=0;i
我认为您在循环中签入的逻辑不正确。

    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;
        }
    }

我认为您在循环中检查的逻辑不正确。

    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;
        }
    }

你能更详细地解释一下这段代码应该做什么,以及你自己调试它的尝试吗?也许用
映射来代替
列表
?(每次遍历列表可能会非常昂贵。)如果循环不存在,则不会添加新值。当列表中的第一个值不相同时,它会添加一个新值。您需要将第二个模块添加到模块中,然后从模块列表中获取第二个模块并添加周。希望它能工作。你能更详细地解释一下这段代码应该做什么,以及你自己调试它的尝试吗?也许用
映射来代替
列表
?(每次遍历列表可能会非常昂贵。)如果循环不存在,则不会添加新值。当列表中的第一个值不相同时,它会添加一个新值。您需要将第二个模块添加到模块中,然后从模块列表中获取第二个模块并添加周。希望它能工作。我刚刚把代码重构成这个,现在它似乎可以工作了,谢谢!我刚刚把代码重构成这个样子,现在似乎可以工作了,谢谢!