我无法弄清楚我的方法有什么问题,我有一个名为accountsList的ArrayList,我正试图在其他类的方法中实现。我收到此错误消息:“此行-accountId上的多个标记无法解析或不是字段-accountId无法解析或不是字段”
为什么不起作用?
public boolean deposit(long pNr, int accountId, double amount){
for(int i = 0; i < customerlist.size(); i++)
{
if(this.pNr == pNr)
{
for(int j = 0; j < accounts.size(); j++)
{
if(accountId == accounts.accountId)//problem seem to be here
{
balance = balance + amount;
}
}
}
else
return false;
}
return true;
}
答案 0 :(得分:1)
accounts
似乎是一个List,因此您应该尝试访问此List的项目的字段,而不是访问List本身的项目。
if(accountId == accounts.get(j).accountId)
{
balance = balance + amount;
}
您应该使用Iterator
或foreach迭代您的列表 - 然后您不必手动访问每个项目。
我做了一些更改,因此您必须调整以下内容以适合您的代码:
public boolean deposit(long pNr, int accountId, double amount){
for(Customer customer : customerlist)
{
if(pNr == customer.getPNr())
{
for(SavingsAccount account : accounts)
{
if(accountId == account.getAccountId())
{
balance += amount;
return true;
}
}
return false;
}
}
return false;
}
如果要访问其他对象的私有字段,则必须使用getter(如getAccountId()
或getPNr()
) - 这些方法只返回&#34;他们的&#34;私人领域。
答案 1 :(得分:0)
你应该试试
//for lists
if(accountId == accounts.get(j).accountId)
//for arrays
if(accountId == accounts[j].accountId)
在问题界线上。
您当前的代码正在尝试获取列表的accountId而不是listitem。使用get()(或[]如果是数组)将选择该索引列表中的项目。
答案 2 :(得分:0)
使用我的魔法水晶球,我会说accounts
属于List<Account>
类型。您需要将帐户置于j
位置。
实施例
if(accountId == accounts.get(j).accountId) {
}
注意 :您不应该公开accountId
。这应该通过访问器方法检索,因此它应该读取如下内容:
if(accountId == accounts.get(j).getAccountId()) {
}