2016-02-04 47 views
1

學習java,它是典型的做法,使銀行帳戶類,ArrayList麻煩,選擇雙變量'預期的方法調用'

但我有一個問題。

在我的 '人' 類,

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); 

問題是方法在人類的totalBalanceOfAccountsOwned',

accountsOwned(( ⅰ))爲getBalance(); for循環中的部分會導致編譯錯誤

'預期的方法調用'。

我是全新的ArrayList,所以我無法弄清楚什麼是問題。

回答

0

首先改變

private ArrayList accountsOwned; 

private ArrayList<BankAccount> accountsOwned; 

當你以後獲得銀行賬號,Java不知道它的一個銀行賬戶,只認爲它a Object

然後如Kon所述,使用

accountsOwned.get(i).getBalance(); 
+0

我現在學習了關於數組列表的新東西。謝謝。 – Konorika

0

使用array語法不能取消引用List對象或其實現類。例如,

list(0) 

list[0] 

無效。相反,你要

list.get(0);