Java 尝试调用引发异常的方法时未执行增强for循环
我有2个类1.employee management类,它的arraylist为employee type&2。雇员类。在检查alreadyexists异常后,我必须将employee添加到arraylist中。 我在就业管理课上的代码是Java 尝试调用引发异常的方法时未执行增强for循环,java,arraylist,exception-handling,Java,Arraylist,Exception Handling,我有2个类1.employee management类,它的arraylist为employee type&2。雇员类。在检查alreadyexists异常后,我必须将employee添加到arraylist中。 我在就业管理课上的代码是 ArrayList<Employee> eme = new ArrayList<Employee>(); boolean addEmployee(Employee emp){ for(Employee e:em
ArrayList<Employee> eme = new ArrayList<Employee>();
boolean addEmployee(Employee emp){
for(Employee e:eme)
{
if (e.getEmpId()==emp.getEmpId())
{
throw new AlreadyExistsException();
}
else if (e.getEmpId()!=emp.getEmpId())
{
eme.add(emp);
}
return true;
}
问题是,由于employee management类中的arraylist为null,因此没有执行for循环,并且我无法检查employee已经存在异常。如何解决这个问题?(这是我的实习作业)你打算做以下几点
public boolean addEmployee(Employee emp) {
for (Employee e: eme) {
if (e.getEmpId() == emp.getEmpId()) {
throw new AlreadyExistsException();
}
}
eme.add(emp);
return true;
}
这里不需要布尔结果
添加到eme
应在eme
上的循环外完成-否则会引发ConcurrentModificationException
提示 也可以这样写:
List<Employee> eme = new ArrayList<>();
List eme=new ArrayList();
或使用一套:
Set<Employee> eme = new TreeSet<>(Comparator.comparingLong(Employee::getEmpId));
if (!eme.add(emp)) {
throw new AlreadyExistsException();
}
Set eme=new TreeSet(Comparator.comparingLong(Employee::getEmpId));
如果(!eme.add(emp)){
抛出新的AlreadyExistsException();
}
您可以只使用一个简单的if条件,如下所示:
public void addEmployee(Employee emp) throws Exception {
if (eme.size() == 0) { // add as list is empty
eme.add(emp);
} else {
for (Employee e : eme) { // your logic as it is
if (e.getEmpId() == emp.getEmpId()) {
throw new Exception();
} else if (e.getEmpId() != emp.getEmpId()) {
eme.add(emp);
}
}
}
}
您可以根据需要调整使此方法返回
布尔值的逻辑。这是留给你的练习 欢迎来到堆栈溢出。请您将代码的格式设置得更容易阅读,并发布真实代码而不是伪代码,好吗?(这里的“Public”表明这不是您真正的代码。)它不需要是您实际的业务代码,而是一个演示相同问题的示例。如果你能把它扩展到a,那就更好了。当我调用addEmployee方法来添加员工时,它不会进入循环。eme列表不包含任何内容。@这就是为什么我的代码在循环后添加员工,以确保它尚未添加。
public void addEmployee(Employee emp) throws Exception {
if (eme.size() == 0) { // add as list is empty
eme.add(emp);
} else {
for (Employee e : eme) { // your logic as it is
if (e.getEmpId() == emp.getEmpId()) {
throw new Exception();
} else if (e.getEmpId() != emp.getEmpId()) {
eme.add(emp);
}
}
}
}