[英]I'm trying to merge two sorted arrays but getting java.lang.ArrayIndexOutOfBoundsException: 5 can't figure out why
[英]Can't figure out why I'm getting a java.lang.NullPointerExceptio
我看着其他胎面,但仍然找不到我要去哪里。 我正在嘗試制作一個Account對象數組,並從一個文本文件進行掃描以填充它。 感謝您的幫助或指導。
import java.util.*;
import java.io.*;
public class Bank {
private static Account[] accounts = new Account[10];
private static int numAccounts = 0;
public static void main(String[] args) throws Exception {
Scanner fileScan = new Scanner(new File("bankdata.txt"));
for(int i=0; i<accounts.length;i++){
accounts[i] = new Account(null, i, i); //(client, balance, accountNum)
}
while(fileScan.hasNext()){
accounts[numAccounts].getClient().setFName(fileScan.next());
accounts[numAccounts].getClient().setLName(fileScan.next());
accounts[numAccounts].getClient().setAge(fileScan.nextInt());
accounts[numAccounts].getClient().setPhoneNum(fileScan.nextInt());
accounts[numAccounts].setBalance(fileScan.nextDouble());
accounts[numAccounts].setAccountNum(fileScan.nextInt());
numAccounts++;
System.out.println(accounts[numAccounts]);
}
fileScan.close();
}
}
查看如何初始化Account對象,所有的Clients都為空:
accounts[i] = new Account(null, i, i); //(client, balance, accountNum)
然后,當您嘗試使用Client變量時,
accounts[numAccounts].getClient().setFName(fileScan.next());
您會拋出NPE。
解決方案:不要使用空客戶端。 在while循環中創建您的客戶端:
while(fileScan.hasNext()){
String fName = fileScan.next();
String lName = fileScan.next();
int age = fileScan.nextInt();
String phoneNumber = fileScan.next();
Client client = new Client(....); //use info above
accounts[numAccounts].setClient(client);
accounts[numAccounts].setBalance(fileScan.nextDouble());
accounts[numAccounts].setAccountNum(fileScan.nextInt());
numAccounts++;
System.out.println(accounts[numAccounts]);
}
您將自己的客戶端設置為null ,然后在null引用上調用函數,這就是為什么要獲取NPE
accounts[i] = new Account(null, i, i); //(client, balance, accountNum)
在空引用上調用方法或嘗試訪問空引用的字段將觸發NPE。
范例:
public class Test
{
public static void main(String[] args)
{
Object obj = null;
obj.toString(); //cause Null Pointer Exception
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.