-accountId无法解析或不是字段

时间:2014-04-24 10:43:29

标签: java arraylist field

我无法弄清楚我的方法有什么问题,我有一个名为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;
    }

3 个答案:

答案 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()) {
}