java - 为什么我会收到 nullPointerException

标签 java arraylist nullpointerexception

我有以下代码;但是,我似乎正在访问数组列表中不存在的索引...这是代码。任何帮助表示赞赏。

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

}


public class BankAccount {

    String accNumber;
    double balance; 

    Customer myCustomer;

}

public class Customer {

    String firstName;
    String lastName;

}

最佳答案

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

此处没有为第二个BankAccount分配客户。

但是,您正在尝试打印客户详细信息。对于第二个 BankAccount,c 将为 null。对 null 引用的任何操作都会导致 NullPointerException

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

在对 c 进行任何调用之前,请确保 c 不为 null,以避免 NullPointerException

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

关于java - 为什么我会收到 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13076600/

相关文章:

java - 两个人相同的代码,只有一个人出现NullPointerException?

java - 对象数组导致 Java 空指针异常

java - 如何将 CaretEvent.getDot() 转换为直角坐标?

java - Hook 我的 Vaadin Web 应用程序的启动和停止吗?

Java 对 Excel 的多个列表进行排序

java - 如何在使用 ActionListener 按钮和 GUI 时将项目添加到数组列表?

java - 列出不同类型的数组值并将它们相加

java - 什么是NullPointerException,我该如何解决?

java - HttpEntity 在关闭后重置并抛出 java.net.SocketException

命令行聊天应用程序中的Java同步输入和输出