2014-09-25 123 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