javaarraylistnullpointerexception

why am I getting nullPointerException


I have the following code; however, it seems that I'm accessing an index in the arraylist that doesn't exist... here's the code. Any help appreciated.

Main class:

import java.util.*;

public class Main {

    public static void main(String[] args) {
        
        ArrayList<BankAccount> allAccounts = new ArrayList<BankAccount>();
        
        Customer john = new Customer();
        john.firstName = "John";
        john.lastName = "Doe";
        
        BankAccount johnBa = new BankAccount();
        johnBa.accNumber = "111-222-333";
        johnBa.balance = 200;
        johnBa.myCustomer = john;
        
        Customer nick = new Customer();
        nick.firstName = "Nick";
        nick.lastName = "James";
        
        BankAccount nickBa = new BankAccount();
        nickBa.accNumber = "222-333-444";
        nickBa.balance = 100;
        
        allAccounts.add(johnBa);
        allAccounts.add(nickBa);
        
        ArrayList<Customer> allCust = new ArrayList<Customer>();
        allCust = extractCustomers(allAccounts);
        
        for(Customer c : allCust) {
            System.out.println(c.firstName+" "+c.lastName);
        }
    }
    
    static ArrayList<Customer> extractCustomers(ArrayList<BankAccount> ba) {
        ArrayList<Customer> cu = new ArrayList<Customer>();
        
        for(BankAccount b: ba) {
            cu.add(b.myCustomer);
        }
        return cu;
    }
}

BankAccount class:

    public class BankAccount {
        
        String accNumber;
        double balance; 
        
        Customer myCustomer;
    
    }

Customer class:

    public class Customer {
        
        String firstName;
        String lastName;
    
    }

Solution

  •  BankAccount nickBa = new BankAccount();
            nickBa.accNumber = "222-333-444";
            nickBa.balance = 100;
    

    No customer assigned here for second BankAccount.

    But, you are trying to print customer details. For second BankAccount c would be null. Any operation on null reference results in NullPointerException.

     for(Customer c : allCust) {
                System.out.println(c.firstName+" "+c.lastName);
            }   
    

    Make sure c is not null before making any calls on c to avoid NullPointerException.

      for(Customer c : allCust) {
               if(c != null){
                System.out.println(c.firstName+" "+c.lastName);
                   }
            }