我无法弄清楚代码中的问题所在。我有一个员工数组列表和赋值数组列表。目标是仅向那些技能阵列包含所有必需技能且在轮班时可用的员工添加availableEmpAry
。
问题出在我找到了具备所需技能的员工之后。在启动第二个循环时,它不会检查员工当时是否可用。它始终跳转到else
并显示消息框。
for (int j = 0; j < empAry.size(); j++){
//Checking if employee skill array has an exact skill for cs
if (empAry.get(j).empSkillAry.containsAll(tempShift.Schedule.skillRequiredAry)){
for(int i = 0; i < assignmentAry.size(); i++){
if(assignmentAry.get(i).employee.equals(empAry.get(j))){
Date shiftStart= tempShift.Start;
Date shiftEnd=tempShift.End;
Date empAsStart=assignmentAry.get(i).Start;
Date empAsEnd=assignmentAry.get(i).End;
if(empAsStart.before(shiftEnd) && empAsEnd.after(shiftStart)){
JOptionPane.showMessageDialog(availableEmp, "No Available Employee!");
}else{
availableEmpAry.add(empAry.get(j));
availableEmp.setModel(
new DefaultComboBoxModel<Object>(availableEmpAry.toArray())
);
}
}else{
availableEmpAry.add(empAry.get(j));
availableEmp.setModel(
new DefaultComboBoxModel<Object>( availableEmpAry.toArray())
);
}
}//closing assignment loop
}else{
JOptionPane.showMessageDialog(availableEmp, "No employee with required skill!");
}
} // closing loop for employee
答案 0 :(得分:0)
在第二个循环开始时,有以下代码行:
if(assignmentAry.get(i).employee.equals(empAry.get(j)))..
不清楚什么类型的对象是员工,但为了使此条件为TRUE并进入检查可用性的块,您需要正确实现JAva类的equals
方法与员工对象关联。
还建议assignmentAry.get(i).employee
的类型和empAry.get(j)
的类型应该相同,以使equals
方法有意义。这不是JAVA约束,而更像是设计约束。