我不确定如何纠正这个问题才能使其发挥作用,
/ **如果帐户存在,则应删除指定为参数的帐号的帐户。然后应通过方法结果对话框返回适当的布尔值。 * /
public boolean removeAccount(String accountNumber)
{
int index = 0;
for(Account account : accounts)
{
if((account.getAccountNumber() == accountNumber) && index < accounts.size())
accounts.remove(account);
else
index++;
}
}
尝试使用迭代器
public boolean removeAccount(String accountNumber)
{
Iterator<Account> i = accounts.iterator();
while (i.hasNext()) {
Account s = i.next(); // must be called before you can call i.remove()
if(s.getAccountNumber().equals(accountNumber))
return i.remove();
}
return false;
}
我得到&#34;不兼容类型:void无法转换为布尔值&#34;
答案 0 :(得分:1)
试
public boolean removeAccount(String accountNumber)
{
Iterator<Account> i = accounts.iterator();
while (i.hasNext()) {
Account s = i.next(); // must be called before you can call i.remove()
if(s.getAccountNumber().equals(accountNumber)){
i.remove();
return true;
}
}
return false;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
迭代时不要从列表中删除。迭代时获取对它的引用,然后在迭代后将其从列表中删除。
public boolean removeAccount(String accountNumber)
{
int index = 0;
Account toRemove;
for(Account account : accounts)
{
if (account.getNumber.equals(accountNumber)){
toRemove=account;
}
}
accounts.remove(toRemove)
}
显然缺少nullchecks等。
答案 3 :(得分:-2)
对于迭代器尝试,您没有调用正确的删除方法。正如JavaDoc中对迭代器的解释,remove()将返回void。你可能想要考虑这样的事情:
for(int i = 0; i < accounts.size(); i++)
{
Account a = accounts.get(i);
if(a.getAccountNumber().equals(accountNumber))
{
return accounts.remove(i);
}
}