0

各優先顧客を反復処理し、残高を合計して総資産を作成する foreach ループがあります。ただし、顧客オブジェクトを見るたびに、null と評価されます。PreferredCustomer は、抽象クラス Customer のサブクラスです。foreach ループを正しく実行していないと仮定していますが、何が間違っているのかわかりません。

 public static void getBalance() {
    for(Customer customer: preferredCustomers){
        ArrayList<Account> al = customer.getAccountList();
        for(Account account: al){
            totalAssets+=account.getBalance();
            //balance = account.getbalance();
        }
        customer.setBalance(totalAssets);
    }
}

また、Arraylist AccountList は、各顧客のアカウント オブジェクトのリストです。

4

1 に答える 1

1

将来、コードで NPE をスローする場合は、サンプル コードに対応する行へのポインターを使用して、投稿に例外を含める必要があります。

  • for(CustomerループでNPE をスローしている場合、preferredCustomersフィールドはnullです。
  • 行に NPE がスローされた場合、コレクションcustomer.getAccountList()内の要素の 1 つは です。preferredCustomersnull
  • for(Account accountループで NPE をスローする場合、いずれかのpreferredCustomersアカウント リストがnull.
  • 回線に NPE がスローされた場合totalAssets+=account.getBalance();、リスト内のアカウントの 1 つは ですnullnull Longまた、balance フィールドがオブジェクトである可能性もあります。

@ColinD が述べたように、Eclipse でデバッガーを使用する方法を学習することをお勧めします。

于 2012-10-04T21:14:30.193 に答える