ArrayList很难选择双变量'方法调用预期'

时间:2016-02-04 02:24:15

标签: java arraylist methods double

学习java,这是制作银行账户类的典型做法,

但我有一个问题。

在我的'人'类中,

public class Person{
    private String name;
    private String personId;
    private String e_mail;
    private ArrayList accountsOwned;

    public Person(String personId) {
        this.accountsOwned = new ArrayList<BankAccount>();
        this.personId = personId;
    }
    ...

    public double totalBalanceOfAccountsOwned(){
        double totalBalance = 0;

        for (int i = 0; i < accountsOwned.size(); i++){
            totalBalance += accountsOwned((i)).getBalance();
            //getBalance() is method in BankAccount class
        }
        return totalBalance;
    }
}

在我的主(测试)课程中,

    ba1_1 = new BankAccount("act001", 100);
    ba1_2 = new BankAccount("act001", 200);
    ba1_3 = new BankAccount("act001", 300);
    ba2_1 = new BankAccount("act001", 400);
    ba2_2 = new BankAccount("act001", 500);//(String, double)

    ba1_1.setOwner(p1);
    ba1_2.setOwner(p1);
    ba1_3.setOwner(p1);

    p1.getAccountsOwned().add(ba1_1);
    p1.getAccountsOwned().add(ba1_2);
    p1.getAccountsOwned().add(ba1_3);

    p2.getAccountsOwned().add(ba2_1);
    p2.getAccountsOwned().add(ba2_2);
    p2.getAccountsOwned().add(ba1_3);

问题是Person类中的方法'totalBalanceOfAccountsOwned',

accountsOwned((ⅰ))为getBalance(); part for for循环使编译错误

'方法调用预期'。

我是ArrayList的新手,所以我无法弄清楚什么是问题。

2 个答案:

答案 0 :(得分:0)

您无法使用List语法取消引用array对象或其实现类。例如,

list(0)

list[0]

无效。相反,你想要

list.get(0);

答案 1 :(得分:0)

首先改变

private ArrayList accountsOwned;

private ArrayList<BankAccount> accountsOwned;

当您以后获得银行帐户时,java不知道它是一个银行帐户,只认为它是一个对象

然后如Kon所说,使用

accountsOwned.get(i).getBalance();