求大神,pta总有两个测试点过不了

 

设计一个名称为Account的类,具体包括:

  • id:账号,私有属性,整型,默认值为0;
  • balance:余额,私有属性,实型,默认值为0;
  • annualInterestRate:当前利率,私有属性,实型,默认值为0,假设所有帐户均有相同的利率;
  • dateCreated:账户开户时间,私有属性,LocalDate类型,默认为2020年7月31日;
  • 一个能创建默认账户的无参构造方法;
  • 一个能创建带特定id和初始余额的账户的构造方法;
  • id、balance、annualInterstRate的getter及setter方法;
  • dateCreated的getter方法;
  • 一个名为getMonthlyInterestRate()的方法返回月利率(月利率计算公式:余额*(年利率/1200));
  • 一个名为withDraw的方法从账户提取特定数额,当提取数额大于余额或为负数系统返回WithDraw Amount Wrong提示;
  • 一个名为deposit的方法向账户存储特定数额,当存储数额大于20000元或为负数系统返回Deposit Amount Wrong提示。

编写一个测试程序:

  1. 创建一个账户,其账户id、余额及利率分别有键盘输入,账户开户时间取系统当前时间;
  2. 输入取钱金额,系统进行取钱操作,如果取钱金额有误,则输出提示信息后系统继续运行;
  3. 输入存钱金额,系统进行存钱操作,如果存钱金额有误,则输出提示信息后系统继续运行;
  4. 系统输出,以如下格式分别输出该账户余额、月利息以及开户日期(输出实型数均保留两位小数)

输入格式:

在一行内分别输入账户id、初始余额、当前利率、提取金额、存储金额,数据间采用一个或多个空格分隔。

输出格式:

共分三行输出,分别为约、计算的月利息以及开户日期,格式如下:

  • `The Account'balance:余额`
  • The Monthly interest:月利息
  • `The Account'dateCreated:年-月-日`

import java.util.Date;
import java.util.Scanner;

public class Account {
    private int id=0;//账号,私有属性,整型,默认值为0
    private float balance=0;//余额,私有属性,实型,默认值为0
    private static float annualInterestRate=0;//当前利率,私有属性,实型,默认值为0
    private Date dateCreated;//账户开户时间,私有属性,LocalDate类型,默认为2020年7月31日

    //创建默认账户的无参构造方法
    public Account(){
    }

    //创建带特定id和初始余额的账户的构造方法
    public Account(int id,float balance){
        this.id=id;
        this.balance=balance;
    }

    //getter
    public int getId(){
        return id;
    }
    public float getBalance(){
        return balance;
    }
    public float getAnnualInterestRate() {
        return annualInterestRate;
    }
    public Date getDateCreated(){
        return getDateCreated();
    }

    //setter
    public void setId(int id) {
        this.id = id;
    }
    public void setBalance(float balance) {
        this.balance = balance;
    }
    public  void setAnnualInterestRate(float annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    //主函数
    public static void main(String[] args){
        Scanner x=new Scanner(System.in);
        Account zh=new Account();
        zh.setId(x.nextInt());//得到账户id
        zh.setBalance(x.nextFloat());//得到账户余额
        zh.setAnnualInterestRate(x.nextFloat());//得到账户月利率
        int tqje=x.nextInt(),ccje=x.nextInt();//得到提取金额和存储金额

        float b,c,d;
        b= zh.withDraw(tqje);
        c= zh.deposit(ccje);
        d=getMonthlyInterestRate(c);

        System.out.printf("The Account'balance:%.2f\n",c);
        System.out.printf("The Monthly interest:%.2f\n",d);
        System.out.println("The Account'dateCreated:2020-07-31");
    }
    //计算月利率
    public  static float getMonthlyInterestRate(float c){
        float interest;
        interest= (float) (c*annualInterestRate/1200.0);
        return interest;
    }
    //取钱
    public float withDraw(int tqje){
        if(tqje>balance||tqje<0){
            System.out.println("WithDraw Amount Wrong");
        }
        else{
            this.balance=getBalance()-tqje;
        }
        return balance;
    }
    //存钱
    public  float deposit(int ccje){
        if(ccje>20000||ccje<0){
            System.out.println("Deposit Amount Wrong");
        }
        else{
            this.balance=getBalance()+ccje;
        }
        return balance;
    }

}

 

把问题列出来