我有以下代码;但是,似乎我正在访问arraylist中不存在的索引......这是代码。任何帮助表示赞赏。
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;
}
答案 0 :(得分:4)
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);
}
}
答案 1 :(得分:0)
您需要在BankAccount类中初始化您的客户obj,如下所示。
Customer myCustomer = new Customer();
此外,不建议您像访问类一样访问类变量。通过调用getCustomer()
创建get和set方法并访问Customer obj