java中的帐户应用程序的奇数输出

时间:2014-07-28 00:03:32

标签: java jgrasp

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

  

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

     

数据成员:

     

类型为int的私有数据字段,该帐户名为id;

     

类型为double的私有数据字段,名为帐户余额;

     

double类型的私有数据字段,名为annualInterestRate   存储当前利率(假设所有账户都相同)   利率);

     

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

     

方法用于创建默认帐户和集合的无参数构造函数   以下数据成员为0(零):id,balance和   annualInterestRate;

     

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

     

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

     

dateCreated的访问器方法

     

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

     

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

     

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

     

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

     

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

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

----jGRASP exec: java AccountTest


Current account values: 
Account@208e2fb5

Current account values: 
Account@208e2fb5

Current account values: 
Account@208e2fb5

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

Tester App:

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;
   }    
}

为我的格式提前道歉。

1 个答案:

答案 0 :(得分:0)

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

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

您可以检查如何覆盖toString方法here

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

  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);
    }