无法确定错误原因 - 与ArrayList和FOR循环相关,我该如何修复我的代码?
无法确定错误原因 - 与ArrayList和FOR循环相关,我该如何修复我的代码?
这个问题已经在此处有答案:
我正在创建一个非常简单的银行经理类,它处理许多银行账户对象 - 每个对象都使用唯一的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 bankAccounts = new ArrayList<>(); public BankMngr(){ this.bankAccounts = new ArrayList(); } 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账户但是却出现了错误。我想不出解决方案是什么,错误消息也没有帮助我,因为我是一个很新手,我真的很感激指点。
谢谢大家。
admin 更改状态以发布 2023年5月24日
我假设你遇到的错误是 ConcurrentModificationException
。当使用“for each”循环遍历列表时,不应该从列表中删除任何元素。