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