2017-01-09 131 views
1

我有一個arrayList private ArrayList Modules;在那裏我想要存儲模塊對象,然後我想檢查是否有一個對象具有相同的moduleNummer作爲插入的一個,這部分工作,當我只進入相同的moduleNummer它工作正常,當我輸入第二個(不同的)數將增加一個新的模塊,這兩個數字,但是當我想以一個星期添加到與2號的模塊將無法正常工作,我不uderstand爲什麼發生這種情況檢查Object是否包含ArrayList中的值不起作用

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

也許使用'Map'而不是'List'? (每次遍歷列表可能會相當昂貴。) –

+0

當循環不存在時,您的循環不會添加新值。當列表中的第一個值不相同時,它會添加一個新值。 – RealSkeptic

回答

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); 
+0

我只是重構了我的代碼,並且它現在似乎正在工作,謝謝! –

+0

歡迎您:) – davidxxx

相關問題