无法识别错误推理 - 与ArrayList和FOR循环相关,我该如何修复我的代码? [重复]

问题描述 投票:-5回答:1

这个问题在这里已有答案:

我正在创建一个非常简单的简单银行经理类,它处理许多银行账户对象 - 每个对象都使用唯一的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但收到错误。我无法弄清楚解决方案可能是什么,并且错误信息对我没有帮助,因为我是一个初学者,我真的很欣赏正确方向的一点,

多谢你们。

java object for-loop arraylist netbeans
1个回答
0
投票

我假设你得到的错误是ConcurrentModificationException。使用“for each”循环浏览时,不应从列表中删除。

见:ConcurrentModificationException for ArrayList

© www.soinside.com 2019 - 2024. All rights reserved.