这个问题在这里已有答案:
我想循环遍历一个arraylist,看看p.name(播放器名称)是否等于用户在文本框中键入的内容;当我输入一个值时,它适用于第一个名称,但是当我更改文本框中的值时,它会引发并发修改错误。
公司课程
public class Company {
int shares = 100;
ArrayList <Player> shareHolders = new ArrayList<>();
if (condition()) {
for (Player p: company.shareHolders) { // error highlight this line
if (p.name.equalsIgnoreCase(txtname.getText()) &&
(company.shares <= 100 && company.shares >0)) {
company.shares -= Integer.parseInt(txtShares.getText());
p.shares += Integer.parseInt(txtShares.getText());
System.out.println(p.name+":"+p.shares+" | Company"+company.shares);
return;
}else{
company.shareHolders.add(new Player(txtname.getText()));
System.out.println(txtname.getText()+" added");
}
}
}
你正在迭代它修改company.shareHolders
,这是不允许的(因此ConcurrentModificationException
)。