ssc85 2017-10-08 12:21 采纳率: 0%
浏览 4877
已结题

新手在线等~Exception in thread ~

package banking;

public class Account {
protected double balance;

public Account(double balance) {
    super();
    this.balance = balance;
}

public double getBalance() {
    return balance;
}

public void setBalance(double balance) {
    this.balance = balance;
}

public boolean deposit(double amt) {
    balance+=amt;
    return true;
}
public boolean withdraw(double amt) {
    if(amt<=balance) {
        balance -= amt;
    }else {
        return false;
    }
    return true;

}

}

package banking;

public class SavingAccount extends Account {
private double interestRate;

public SavingAccount(double balance, double interestRate) {
    super(balance);
    this.interestRate = interestRate;
}

public double getInterestRate() {
    return interestRate;
}

}

package banking;

public class CheckingAccount extends Account {
private double overdraftProtection;

public CheckingAccount(double balance) {
    super(balance);
}

public CheckingAccount(double balance, double overdraftProtection) {
    super(balance);
    this.overdraftProtection = overdraftProtection;
}

public boolean withdraw(double amt) {
    if(amt<=balance) {
        balance -= amt;
        return true;
    }else {
        if(overdraftProtection>= amt - balance) {
            overdraftProtection -= amt - balance;
            balance = 0;
        }else {
            return false;
        }
    }
    return true;
}

}

package banking;

public class Customer {
private String lastName;
public String getLastName() {
return lastName;
}
public String getFirstName() {
return firstName;
}

private String firstName;
Account[] accounts;
 int numberOfAccounts;
public Customer(String L,String F) {

    lastName = L;
    firstName =F;
}
public Customer() {

    accounts = new Account[2];
}

public void addAccount(Account account) {

    accounts[numberOfAccounts++]=account;
}
public Account getAccounts(int index) {
    return   accounts [index];
}


public int getNumberOfAccounts() {
    return numberOfAccounts;
}

}

package banking;

public class Bank {
private Customer[] customers;
private int numberOfCustomers;
public Bank() {
customers = new Customer[5];
}
public Customer getCustomers(int index) {
return customers[index];
}
public int getNumberOfCustomers() {
return numberOfCustomers;
}
public void addCustomer(String L,String F) {
Customer customer = new Customer(L,F);
customers[numberOfCustomers]=customer;
numberOfCustomers++;
}

}

package banking;

public class TestBanking {
public static void main(String[] args) {
Bank bank = new Bank();
Customer customer;

    bank.addCustomer("Jane", "Smith");
    customer = bank.getCustomers(0);
    customer.addAccount(new SavingAccount(500,0.05));
    customer.addAccount(new CheckingAccount(200,400));

    bank.addCustomer("oven", "Bryant");
    customer = bank.getCustomers(1);
    customer.addAccount(new CheckingAccount(200));

    bank.addCustomer("Tim", "Soley");
    customer=bank.getCustomers(2);
    customer.addAccount(new SavingAccount(1500,0.05));
    customer.addAccount(new CheckingAccount(200));

    bank.addCustomer("Maria", "Soley");
    customer = bank.getCustomers(3);
    customer.addAccount(bank.getCustomers(2).getAccounts(1));
    customer.addAccount(new SavingAccount(150,0.05));

    for(int i = 0;i<bank.getNumberOfCustomers();i++) {
        customer = bank.getCustomers(i);
        System.out.println();
        System.out.println("Customer "+customer.getLastName()+customer.getFirstName());

    }








}

}
错误是Exception in thread "main" java.lang.NullPointerException
at banking.Customer.addAccount(Customer.java:28)
at banking.TestBanking.main(TestBanking.java:13)
不明白哪里错了,刚刚自学JAVA的小萌新,希望能够详细解答,并给出修改方案~

  • 写回答

5条回答 默认 最新

  • legendCoder 2017-10-09 01:34
    关注

    很明显嘛,在你TestBanking的main方法的13行出现了空指针异常。追踪过去应该是在customer.addAccount(new SavingAccount(500,0.05));这里出现的。customer是没有问题的,异常只应该出现在addAccount方法内部。接下来追踪到Customer类的addAccount方法查看。你写的代码如下: accounts[numberOfAccounts++]=account;直接向accounts数组中添加Account对象,问题就出现在这里,很明显了。你的accounts数组并没有初始化就在使用了,肯定会是空指针异常。所以修改方法就是在适当的时候进行初始化,你可以尝试在声明数组的时候就初始化,或者调用构造方法的时候初始化。有帮助的话,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮