这个问题在这里已有答案:
我正在创建一个非常简单的简单银行经理类,它处理许多银行账户对象 - 每个对象都使用唯一的accountNumber,accName等创建。这就是创建银行账户的方式:
package banksystem;
import java.util.*;
public class BankAcc {
private String accountName;
private int accountNumber;
private int accountOverdraft;
private int currentBalance;
public BankAcc(String accountName, int accountNumber,
int accountOverdraft, int currentBalance){
this.accountName = accountName;
this.accountNumber = accountNumber;
this.accountOverdraft = accountOverdraft;
this.currentBalance = currentBalance;
}
public void deposit(int money){this.currentBalance += money;}
public void withdraw(int money){
int curr = this.currentBalance + this.accountOverdraft;
if (money < curr){this.currentBalance -= money;}
}
public String accountName(){return this.accountName;}
public int accountNumber(){return this.accountNumber;}
public int getCurrentBalance(){return this.currentBalance;}
public int accountOverdraft(){return this.accountOverdraft;}
}
银行帐户经理类创建如下,我使用for循环,以便程序可以识别我想要编辑的银行帐户。
package banksystem;
import java.util.*;
public class BankMngr {
private ArrayList<BankAcc> bankAccounts = new ArrayList<>();
public BankMngr(){
this.bankAccounts = new ArrayList<BankAcc>();
}
public void addBankAcc(String accountName, int accountNumber, int
accountOverdraft, int currentBalance){
BankAcc newBankAcc = new BankAcc(accountName, accountNumber,
accountOverdraft, currentBalance);
bankAccounts.add(newBankAcc);
}
public void removeBankAcc(int accountNumber){
for(BankAcc b: bankAccounts){
if (b.accountNumber() == accountNumber){bankAccounts.remove(b);}
else;
}
}
public String accountsList(){
String s = "ACCOUNTS UNDER MANAGER:" + "\n";
for(BankAcc b: bankAccounts){s+= b.accountNumber()+ " " +
b.accountName() + "\n";}
return s;
}
}
一切似乎工作正常,但当我在我的主要使用此代码时,我收到一个错误。
package banksystem;
import java.util.*;
public class BankSystem{
public static void main(String[] args) {
BankMngr ManagerBob = new BankMngr();
ManagerBob.addBankAcc("John", 1425, 2000, 1000);
ManagerBob.addBankAcc("Kane", 1358, 4000, 6000);
ManagerBob.addBankAcc("Kane", 1693, 4000, 6000);
ManagerBob.addBankAcc("Dave", 1976, 2000, 3500);
System.out.println(ManagerBob.accountsList());
ManagerBob.removeBankAcc(1976);
System.out.println(ManagerBob.accountsList());
}
}
我只想删除帐户1976但收到错误。我无法弄清楚解决方案可能是什么,并且错误信息对我没有帮助,因为我是一个初学者,我真的很欣赏正确方向的一点,
多谢你们。
我假设你得到的错误是ConcurrentModificationException
。使用“for each”循环浏览时,不应从列表中删除。