对象和类:寻找余额,年利率,月利率,撤回,存款

时间:2014-03-03 22:49:41

标签: java

说明:设计一个名为Account的类,其中包含:

帐户的名为id的私有int数据字段(默认值为0)。

  1. 一个名为该帐户余额的私有双数据字段(默认为0)。
  2. 名为annualInterestRate的私有常量双精度数据字段,用于存储当前12%的利率。假设所有账户的利率相同。
  3. 名为dateCreated的私有日期数据字段,用于存储创建帐户的日期。
  4. 创建默认帐户的无参数构造函数。
  5. 创建具有指定ID和初始余额的帐户的构造函数。
  6. id,balance和annualInterestRate的访问器(setter)和mutator(getter)方法。
  7. dateCreated的访问器方法。
  8. 一个名为getMonthlyInterestRate()的方法,以百分比形式返回月利率。例如,它返回1而不是.01,每月费率为1%。
  9. 一个名为getMonthlyInterest()的方法,它返回每月兴趣。
  10. 一种名为withdraw的方法,用于从帐户中提取指定金额。
  11. 将指定金额存入帐户的名为deposit的方法。
  12. 在Bluej中创建一个项目文件并实现该类。 (提示:方法getMonthlyInterest()是返回每月利息,而不是利率。每月利息是余额* monthlyInterestRate.urwaysInterestRate是annualInterestRate / 1200。

    使用BlueJ测试程序。您应该测试每种方法,确保它们正常工作。

    编写第二个名为AccountTester的类,其中包含main方法。帐户测试人员应按此顺序执行以下操作:

    1. 创建帐户对象
    2. 显示帐户余额
    3. 显示annualInterestRate
    4. 存款$ 150
    5. 显示帐户余额
    6. 提取50美元
    7. 显示帐户余额
    8. 存入每月利息
    9. 显示帐户余额
    10. 以下是我的以下代码。我有错误我不知道如何解决它们。任何帮助/提示将不胜感激

      import java.util.Scanner;
      import java.util.Date;
      
      public class Account
      {
          private int id = 0;
          private double balance = 0;
          final private double annualinterestrate = 0.12;
          Date dateCreated;
      
          public Account()
          {
      
          }
      
          public Account(int aId, double aBalance, double annualInterestRate)
          {
              id = aId;
              balance = aBalance;
              annualInterestRate = annualInterestRate;
              dateCreated = new Date();
          }
      
          public void setID (int aId)
          {
              id = aId;
          }
      
          public int getID()
          {
              return id;
          }
      
          public void setBalance (double aBalance)
          {
              balance = aBalance;
          }
      
          public double getbalance()
          {
              return balance;
          }
      
          public void setAnnualInterestRate (double aannualInterestRate)
          {
              annualInterestRate = aannualInterestRate;
          }
      
          public double getAnnualInterestRate()
          {
              return annualInterestRate;
          }
      
          public Date getDateCreated()
          {
              return dateCreated;
          }
      
          public double getMonthlyInterestRate()
          {
              return annualInterestRate / 12;
          }
      
          public void withdraw(double amount)
          {
              balance -= amount;
          }
      
          public void deposit(double amount)
          {
              balance += amount;
          }
      }
      

      然后这是包含主要方法的第二类代码:

      public class AccountTester
      {
      
          public static void main(String[] args)
          {
              Account account = new Account(1857, 5000, 0.12);
      
              account.setID(1857);
              account.setBalance(5000);
              account.setAnnualInterestRate(0.12);
      
      
      
              System.out.println ("Account number: \n"+ +account.getID());
              System.out.println ("The account balance is: $ \n" + +account.getbalance());
              System.out.println("The Annual Interest Rate is: $ \n" + account.getannualInteresrRate());
              account.deposit(150);
              System.out.println("The account balance is: $ \n" +account.getbalance());
              account.withdraw(50);
              System.out.println("The account balance is: $ \n" +account.getbalance());
              System.out.println ("The monthly interest earned is: $ \n" + +account.getbalance() *    account.annualInterestRate());
              System.out.println ("The account was created on: \n" + +account.getdateCreated());
      
          }
      }
      

1 个答案:

答案 0 :(得分:0)

您当前的问题是,在定义annualInterestRate字段时没有使用camelCasedNames,因此它不存在!它目前被命名为annualinterestrate(注意没有上限!)。您应该将其重命名以匹配您在其他地方使用的内容。

此外,该字段还有另一个问题,即您已将其声明为final。这意味着您无法在创建对象后对其进行修改,因此除非您删除setAnnualInterestRate修饰符,否则您的final方法注定会失败。因此,字段声明应如下所示:

private double annualInterestRate = 0.12;

一般来说,您的命名惯例显然会让您感到非常悲伤。您在评论中指出您不想使用this关键字,因为您的教师尚未介绍它,这没关系,但您应该至少以某种方式命名您的变量看起来很明显发生了什么以及它是否有效。使用小写"a"前缀变量名称不是答案。相反,如果您需要避免命名冲突,请考虑有意义的前缀或后缀。例如:

public void setBalance (double newBalance)
{
    balance = newBalance;
}

您在其他地方还有其他拼写错误,包括您的AccountTester课程。您需要仔细检查代码并确保名称完全匹配。使用带有实时编译警告和自动完成功能的Eclipse或NetBeans等IDE可能会为您节省很多麻烦。