2014-09-25 122 views
0

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

删除客户的方法工作正常。客户可以拥有多个帐户,并且删除其中一个帐户的代码不起作用。它所做的是删除整个客户,而不仅仅是账户。 我相信它与迭代器有关。我的代码删除它,这是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 deleteAccount(String accountId, String customerNumber) {   
    Iterator<Customer> it = customers.iterator(); 
    while (it.hasNext()) { 
     Customer c = it.next(); 
     if (c.getNumber().equals(customerNumber)) { 
      for(Account a: c.getAccounts()) { 
       if(a.getAccountId().equals(accountId)) { 
        it.remove();       //I Think it's wrong here 
       } 
      } 
     } 
    } 
} 
+0

“不工作”是什么意思? – mic4ael 2014-09-25 19:17:50

+0

我们需要知道该客户对象的详细信息 - 您从哪里得到它,以及它的delete()方法是做什么的?它如何保存到dataqbase? – FrobberOfBits 2014-09-25 19:18:37

+1

好的,你打电话给'it.remove',它将删除集合本身返回的最后一个元素。因此,它显然删除了您操作的“客户”对象,显然您只是想要删除该帐户?您需要为您的Account对象添加第二个迭代器,然后在遍历列表时调用正确的账户中的'remove'。 – user3062946 2014-09-25 19:20:54

回答

1

您需要创建的帐户的Iterator,而不是客户:

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; 
    } 
} 

我还添加break当账户和客户中找到。

3

您需要使用Iterator类在帐户中添加迭代的第二水平,你用同样的方法迭代客户。在你的代码的问题是用以下语句(如你怀疑):

it.remove(); 

it引用一个迭代器客户名单。因此,该行所做的是删除客户而不是账户。只需添加另一个循环如下:

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

谢谢,这就是我一直在寻找的东西。我会尝试你的解决方案 – user2939293 2014-09-25 20:04:07