Java 删除帐户、银行程序

Java 删除帐户、银行程序,java,iterator,Java,Iterator,你能帮我从我的银行程序中删除一个帐户吗 删除客户的方法工作正常。一个客户可以有多个帐户,但删除其中一个帐户的代码不起作用。它所做的是删除整个客户,而不仅仅是帐户。 我相信这与迭代器有关。我的代码删除它,它是customerlist中的迭代器。但是我怎么能做呢 删除客户的方法: public void deleteCustomer(String customerNumber) { Iterator<Customer> it = customers.iterato

你能帮我从我的银行程序中删除一个帐户吗

删除客户的方法工作正常。一个客户可以有多个帐户,但删除其中一个帐户的代码不起作用。它所做的是删除整个客户,而不仅仅是帐户。 我相信这与迭代器有关。我的代码删除它,它是customerlist中的迭代器。但是我怎么能做呢

删除客户的方法:

public void deleteCustomer(String customerNumber) {        
    Iterator<Customer> it = customers.iterator();
    while (it.hasNext()) {
        Customer c = it.next();
        if (c.getNumber().equals(customerNumber)) {
            it.remove();
        }
    }
}
public void deleteCustomer(字符串customerNumber){
Iterator it=customers.Iterator();
while(it.hasNext()){
客户c=it.next();
如果(c.getNumber().equals(customerNumber)){
it.remove();
}
}
}
删除帐户的方法(非工作):

public void deleteCount(字符串accountId,字符串customerNumber){
Iterator it=customers.Iterator();
while(it.hasNext()){
客户c=it.next();
如果(c.getNumber().equals(customerNumber)){
对于(帐户a:c.getAccounts()){
如果(a.getAccountId().equals(accountId)){
it.remove();//我觉得这里不对
}
}
}
}
}   

您需要使用
迭代器
类在帐户上添加第二级迭代,与迭代客户的方式相同。代码中的问题在于以下语句(正如您所怀疑的):

引用客户列表的迭代器。因此,此行所做的是删除客户而不是帐户。只需添加另一个循环,如下所示:

Iterator<Customer> it = customers.iterator();
while (it.hasNext()) {
    Customer c = it.next();
    if (c.getNumber().equals(customerNumber)) {
        Iterator<Account> it2 = c.getAccounts().iterator();
        while (it2.hasNext()) {
           Account a = it2.next();       
           if (a.getAccountId().equals(accountId)) {
               it2.remove();                      
           }
        }
    }
}
Iterator it=customers.Iterator();
while(it.hasNext()){
客户c=it.next();
如果(c.getNumber().equals(customerNumber)){
迭代器it2=c.getAccounts().Iterator();
while(it2.hasNext()){
账户a=it2.next();
如果(a.getAccountId().equals(accountId)){
it2.删除();
}
}
}
}

您需要使用
迭代器
类在帐户上添加第二级迭代,与迭代客户的方式相同。代码中的问题在于以下语句(正如您所怀疑的):

引用客户列表的迭代器。因此,此行所做的是删除客户而不是帐户。只需添加另一个循环,如下所示:

Iterator<Customer> it = customers.iterator();
while (it.hasNext()) {
    Customer c = it.next();
    if (c.getNumber().equals(customerNumber)) {
        Iterator<Account> it2 = c.getAccounts().iterator();
        while (it2.hasNext()) {
           Account a = it2.next();       
           if (a.getAccountId().equals(accountId)) {
               it2.remove();                      
           }
        }
    }
}
Iterator it=customers.Iterator();
while(it.hasNext()){
客户c=it.next();
如果(c.getNumber().equals(customerNumber)){
迭代器it2=c.getAccounts().Iterator();
while(it2.hasNext()){
账户a=it2.next();
如果(a.getAccountId().equals(accountId)){
it2.删除();
}
}
}
}

您需要在帐户而不是客户上创建一个
迭代器:

for(Customer c : customers) {
    if (c.getNumber().equals(customerNumber)) {
        Iterator<Account> it = c.getAccounts().iterator();
        while(it.hasNext()) {
            Account a = it.next();
            if(a.getAccountId().equals(accountId)) {
                it.remove();
                break;                            
            }
        }
        break;
    }
}
for(客户c:客户){
如果(c.getNumber().equals(customerNumber)){
迭代器it=c.getAccounts().Iterator();
while(it.hasNext()){
账户a=it.next();
如果(a.getAccountId().equals(accountId)){
it.remove();
打破
}
}
打破
}
}

当找到帐户和客户时,我还添加了
break

您需要在帐户而不是客户上创建一个
迭代器:

for(Customer c : customers) {
    if (c.getNumber().equals(customerNumber)) {
        Iterator<Account> it = c.getAccounts().iterator();
        while(it.hasNext()) {
            Account a = it.next();
            if(a.getAccountId().equals(accountId)) {
                it.remove();
                break;                            
            }
        }
        break;
    }
}
for(客户c:客户){
如果(c.getNumber().equals(customerNumber)){
迭代器it=c.getAccounts().Iterator();
while(it.hasNext()){
账户a=it.next();
如果(a.getAccountId().equals(accountId)){
it.remove();
打破
}
}
打破
}
}

当找到帐户和客户时,我还添加了
break

你说的“不工作”是什么意思?我们需要知道该客户对象的详细信息-你从哪里得到的,以及它的delete()方法做了什么?它是如何保存到dataqbase的?是的,您正在调用它。remove将删除从集合本身返回的最后一个元素。那么它删除了您操作的“客户”对象,而您显然只是想删除该帐户?您需要为您的帐户对象使用第二个迭代器,然后在遍历列表时对正确的帐户调用
remove
。您说的“不工作”是什么意思?我们需要了解该客户对象的详细信息-您从何处获得该对象,以及该对象上的delete()方法的作用是什么?它是如何保存到dataqbase的?是的,您正在调用它。remove将删除从集合本身返回的最后一个元素。那么它删除了您操作的“客户”对象,而您显然只是想删除该帐户?您的帐户对象需要第二个迭代器,然后在遍历列表时调用正确帐户上的
remove
。谢谢,这就是我要找的。我会试试你的解决方案谢谢,这就是我要找的。我试试你的解决办法