可透支银行账户(继承与super的使用)

主要在于CheckAccount类里重写取款方法一项出错,观察了很久没有找到错在哪里,看了视频原来是第三个if那里先将balance归0了又进行的与balance有关的操作

 @Override
    public void withdraw(double amount) {
        if (amount>0){
           if (amount>(overdraft+getBalance())){
               System.out.println("额度不足");
           }else{
               if (amount>getBalance()){
                   setOverdraft(getOverdraft()+getBalance()-amount);
                   setBalance(0);//要注意本行和上一行的代码顺序,必须先进行balance的运算再将balance归0

               }else{
                   setBalance(getBalance()-amount);
               }
           }
       }else{
           System.out.println("您的输入有误");
       }
    }

完整代码:

package com.jicheng.test4;
//账户类
public class Account {
    private int id;//id
    private double balance;//余额
    private double annualInterestRate;//年利率
    //空参构造器
    public Account() {

    }
    //有参构造器
    public Account(int id, double balance, double annualInterestRate) {
        this.id = id;
        this.balance = balance;
        this.annualInterestRate = annualInterestRate;
    }
    //返回月利率的方法
    public double getMonthlyInterest(){
      return annualInterestRate/12;
    }
    //取款方法
    public void withdraw(double amount){
    if (amount>0&&amount<=balance){
        balance-=amount;
    }else{
        System.out.println("取款失败");
    }
    }
    //存款方法
    public void deposit(double amount){
        if (amount>0){
            balance+=amount;
        }else{
            System.out.println("存款失败");
        }
    }
    //获取id
    public int getId() {
        return id;
    }
    //修改id
    public void setId(int id) {
        this.id = id;
    }
    //获取余额
    public double getBalance() {
        return balance;
    }
    //修改余额
    public void setBalance(double balance) {
        this.balance = balance;
    }
    //获取年利率
    public double getAnnualInterestRate() {
        return annualInterestRate;
    }
    //修改年利率
    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }
}

package com.jicheng.test4;
//可透支的账户
public class CheckAccount extends Account {
    private double overdraft;//透支金额
    //空参构造器
    public CheckAccount() {
    }
    //重写有参构造器方法,加入可透支额度
    public CheckAccount(int id, double balance, double annualInterestRate,double overdraft) {
        this.setBalance(balance);
        this.setAnnualInterestRate(annualInterestRate);
        this.setId(id);
        this.overdraft=overdraft;
    }
    //重写取款方法
    @Override
    public void withdraw(double amount) {
        if (amount>0){
           if (amount>(overdraft+getBalance())){
               System.out.println("额度不足");
           }else{
               if (amount>getBalance()){
                   setOverdraft(getOverdraft()+getBalance()-amount);
                   setBalance(0);//要注意本行和上一行的代码顺序,必须先进行balance的运算再将balance归0

               }else{
                   setBalance(getBalance()-amount);
               }
           }
       }else{
           System.out.println("您的输入有误");
       }
    }
    //获取可透支金额
    public double getOverdraft() {
        return overdraft;
    }
    //修改可透支金额
    public void setOverdraft(double overdraft) {
        this.overdraft = overdraft;
    }
}

package com.jicheng.test4;

public class AccountTest {
    public static void main(String[] args) {
        CheckAccount checkAccount=new CheckAccount(1132,20000,0.045,20000);
        checkAccount.withdraw(30000);//提款30000

        System.out.println("余额"+checkAccount.getBalance());//获取余额
        System.out.println("剩余透支额度"+checkAccount.getOverdraft());//获取透支额度
        checkAccount.withdraw(2500);//提款2500
        System.out.println("余额"+checkAccount.getBalance());//获取余额
        System.out.println("剩余透支额度"+checkAccount.getOverdraft());//获取透支额度
        checkAccount.deposit(3000);//存款3000
        System.out.println("余额"+checkAccount.getBalance());//获取余额
        System.out.println("剩余透支额度"+checkAccount.getOverdraft());//获取透支额度


    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值