尝试调用抛出异常的方法时,增强的 for 循环不会被执行
Enhanced for loop not getting executed when trying to call a method which throws an exception
我有 2 个 classes 1.employee 管理 class,它有一个员工类型数组列表和 2 个员工 class。在检查 alreadyexists 异常后,我必须将员工添加到数组列表中。
我在就业管理中的代码 class 是。
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;
}
在我的员工中 class 我有构造函数、吸气剂和 setters.In 主要方法 我创建了一个员工管理 class 对象 em,并调用了 addEmployee 方法
em.addEmployee(e1);
问题是因为员工管理中的arraylist class 为空,for循环没有被执行,我无法检查员工已经存在的异常。如何解决这个问题? (这是我的练习作业)
您的意图如下。
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<>();
或使用集合:
Set<Employee> eme = new TreeSet<>(Comparator.comparingLong(Employee::getEmpId));
if (!eme.add(emp)) {
throw new 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);
}
}
}
}
您可以根据需要调整使 this 方法 return 成为 boolean
的逻辑。留给你做练习!
我有 2 个 classes 1.employee 管理 class,它有一个员工类型数组列表和 2 个员工 class。在检查 alreadyexists 异常后,我必须将员工添加到数组列表中。 我在就业管理中的代码 class 是。
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;
}
在我的员工中 class 我有构造函数、吸气剂和 setters.In 主要方法 我创建了一个员工管理 class 对象 em,并调用了 addEmployee 方法
em.addEmployee(e1);
问题是因为员工管理中的arraylist class 为空,for循环没有被执行,我无法检查员工已经存在的异常。如何解决这个问题? (这是我的练习作业)
您的意图如下。
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<>();
或使用集合:
Set<Employee> eme = new TreeSet<>(Comparator.comparingLong(Employee::getEmpId));
if (!eme.add(emp)) {
throw new 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);
}
}
}
}
您可以根据需要调整使 this 方法 return 成为 boolean
的逻辑。留给你做练习!