帐户和测试帐户兴趣班

时间:2017-02-23 13:24:28

标签: java oop

我希望我的帐户类和测试帐户兴趣类都有专家意见。我面临的问题是,测试帐户兴趣类的代码只是在前一个12个月的计算兴趣中倍增,而它应该只使用一次。

问题出在

public double computeInterest(int n)
        {
            balance=balance*(Math.pow((1+rate),n/12)); 
            return balance;
        }

正是在这种问题的方法中,我不应该使用余额,而是使用一个存储答案的变量,但是我不清楚这个人是非常清楚的,只是陈述一个变量他很模糊应该使用。

public class Account
{
    private double balance; //STATE
    private double interestRate; //STATE
    private double rate;//STATE

    public Account()
    {
        balance = 0; 
        interestRate = 0;
    }

    public Account(double amount, double interestRate)
    {
        balance = amount;   
        rate = interestRate;

    } 

    public void deposit(double amount)
    {
        balance=balance+amount;
    }

    public void withdraw(double amount)
    {
        balance = balance - amount;
    }

    public void setInterest(double rate)
    {
        balance = balance + balance * rate;
        //this.setInterst = setInterest;  
        //setInterest = InterestRate / 12;
    }

   public double computeInterest(int n)
    {
        balance=balance*(Math.pow((1+rate),n/12)); 
        return balance;
    }

    public double getsetInterest()
    {
        return rate;
    }

    public double getBalance()
    {
        return balance;
    }

    public void close()
    {
        balance =0;
    }

}

这是我的测试帐户兴趣类:

public class TestAccountInterest
{
    public static void main (String[] args)
    {
        Account acc1 = new Account(100, 0.1);//0.10);
        Account acc2 = new Account(133, 0.2); //0.20);

      /*************************************
       ACC1 ACCOUNT BELOW
       *************************************/
        //acc1.deposit(100);
        //acc1.withdraw(100);
        System.out.println(acc1.computeInterest(12));
//      //acc1.computeInterest(12);
//      System.out.println(acc1.computeInterest(24));

        /**************************************
        ACC2 ACCOUNT BELOW
         **************************************/
        acc2.withdraw(100);
        acc2.deposit(100);
        //acc2.computeInterest(24);
        System.out.println(acc2.computeInterest(24));

    }

}

这是最终输出:

110.00000000000001
191.51999999999998

正如您所看到的那样,第二个数字乘以12个月的计算利息,计算利息为24个月,这源于帐户类中的方法:

 public double computeInterest(int n)
        {
            balance=balance*(Math.pow((1+rate),n/12)); 
            return balance;
        }

如果我拿出余额,它仍然会导致错误,所以我对这一特定部分感到困惑。

1 个答案:

答案 0 :(得分:0)

代码,

public double computeInterest(int n) {
  balance = balance * (Math.pow((1 + rate), n / 12)); 
  return balance;
}

应改为

public double computeInterest(int n) {
  return balance * Math.pow(1 + rate, n / 12);
}

在计算兴趣时,您不应更改balance字段。您可能希望使用单独的方法更新balancebalance = balance + computed_interest或类似的内容。

另外,我删除了不必要的括号。这不是一个错误,只是让你的代码可读性降低。