0

所以我有一个 Java 编程 II 类的作业,要求我创建一个名为 Account 的类,该类将执行以下操作:

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

数据成员:

一个名为 id 的 int 类型的私有数据字段,用于帐户;

帐户的双命名余额类型的私有数据字段;

存储当前利率的 double 类型的私有数据字段(假设所有帐户的利率相同);

一个名为 dateCreated 的 Date 类型的私有数据字段,用于存储帐户创建的日期;

方法 一个无参数构造函数,它创建一个默认帐户并将以下数据成员设置为 0(零):id、balance 和 AnnualInterestRate;

一个构造函数,它创建一个具有指定 id 和初始余额的帐户;

id、balance和annualInterestRate的accessor和mutator方法;

dateCreated 的访问器方法

一个名为 getMonthlyInterestRate() 的方法,它返回月利率;

一个名为 getMonthlyInterest() 的方法,它返回每月的利息;

一个名为withdraw的方法,从账户中提取指定的金额;

一种名为 deposit 的方法,将指定的金额存入账户。

编写一个测试程序,创建一个 Account 对象,账户 ID 为 1122,余额为 20,000 美元,年利率为 4.5%。使用withdraw 方法提取$2,500,使用deposit 方法存入$3,000,并打印余额、每月利息和创建此帐户的日期。

教授给了我们测试应用程序,我将在下面链接。所需要做的就是创建我拥有的 Account 类。一切都正确编译,但是当我运行测试器应用程序时,我得到的输出很奇怪:

----jGRASP exec: java AccountTest


Current account values: 
Account@208e2fb5

Current account values: 
Account@208e2fb5

Current account values: 
Account@208e2fb5

我现在不知所措,我不知道该做什么或从这里去哪里。

测试仪应用:

public class AccountTest
{
   public static void main(String [] args)
   {

      Account a = new Account(1122, 20000.00);
      a.setAnnualInterestRate(4.5);

     System.out.println("\nCurrent account values: \n" + a);

      a.withdraw(2500.00);
      System.out.println("\nCurrent account values: \n" + a);

      a.deposit(3000.00);
      System.out.println("\nCurrent account values: \n" + a);
   }
}

我创建的帐户类:

import java.util.Date;
public class Account
{
   private int id;
   private double balance;
   private double annualInterestRate;
   private Date date = new Date();


   Account()
   {
      id = 0;
      balance = 0.0;
      annualInterestRate = 0.0;
   }

   Account(int newId, double bal)
   {
      id = newId;
      balance = bal;
   }

   public void setId(int newId)
   {
      id = newId;
   }

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

   public void setAnnualInterestRate(double annualRate)
   {
      annualInterestRate = annualRate;
   }       

   public int getId()
   { 
      return id;
   }

   public double getBalance()
   {
      return balance;
   }

   public double getAnnualInterestRate()
   {
      return annualInterestRate;
   }         


   /*public void setDate(Date n)
   {
      dateCreated = n;
   }*/

   public java.util.Date getDate()
   {
      return date;
   }   

   double getMonthlyInterestRate()
   {
      return annualInterestRate/12;
   }

   double withdraw(double amount)
   {
      return balance -= amount;
   }

   double deposit(double amount)
   {
      return balance += amount;
   }    
}

为我的格式提前道歉。

4

1 回答 1

0

您正在打印对象的字符串表示形式。您不能期望 java 自己知道您想要打印的内容。

我建议您覆盖对象帐户中的 toString 方法,该方法打印当前对象字段的详细信息/值。

您可以在此处检查如何覆盖 toString 方法

如果您只想打印一个值,例如

  System.out.println("\nCurrent account interest rate :" +  a.getAnnualInterestRate());

更新您的评论。-:

 @Override
    public String toString() {
        return String.format("Here is detail of my object name : %s value : %d",stringValue,doubleValue);
    }
于 2014-07-28T00:05:30.633 回答