嗨,对于我的程序,我试图通过创建另一个数组来复制数组,然后将这些值返回到原始数组,从而使数组更大。
import java.util.Scanner;
import java.util.Arrays;
public class Bank {
public static void main(String[] args) {
Scanner command = new Scanner(System.in);
BankAccount [] arrayAcc = new BankAccount[1];
BankAccount [] arrayAcc1 = new BankAccount[arrayAcc.length + 1];
for(int z = 0; z < arrayAcc.length; z++){
arrayAcc[z] = arrayAcc1[z];
}
arrayAcc = arrayAcc1;
System.out.println("Enter new account number: ");
int accNum = command.nextInt();
arrayAcc[count++].setAccountID(accNum);
}
}
当我后来尝试从这个数组中获取一个对象时,它给了我一个错误:
Exception in thread "main" java.lang.NullPointerException
at Bank.main(Bank.java:47)
答案 0 :(得分:2)
您可以将项目从arrayAcc1
复制到arrayAcc
,而应该相反。
应该是:
arrayAcc1[z] = arrayAcc[z];
顺便说一句,为什么不使用List<BankAccount> accs = new ArrayList<BankAccounts>()
?
答案 1 :(得分:0)
您不需要for循环,因为Arrays.copyOf
已经为您完成了工作。您也不需要强制转换,因为该方法返回与其参数类型相同的数组。
当您尝试访问未分配值的数组索引时,将引发NullPointerException。您还没有使用任何BankAccount
对象填充数组,因此当您执行arrayAcc[count++].setAccountID(accNum);
时,没有BankAccount来设置帐户ID。要向列表中添加帐户,请在调整数组大小后调用构造函数,并将对象添加到最后一个索引。代码应该类似于:
BankAccount []arrayAcc1 = Arrays.copyOf(arrayAcc, arrayAcc.length + 1);
arrayAcc = arrayAcc1;
arrayAcc[arrayAcc.length - 1] = new BankAccount(/*arguments here*/);