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