Java 帐户和测试帐户利息类别
我希望有人对我的帐户类和测试帐户利息类的专家意见。我面临的问题是,来自测试帐户利息类的代码只会与前12个月的计算利息相乘,而它应该只使用一次 问题出在Java 帐户和测试帐户利息类别,java,oop,Java,Oop,我希望有人对我的帐户类和测试帐户利息类的专家意见。我面临的问题是,来自测试帐户利息类的代码只会与前12个月的计算利息相乘,而它应该只使用一次 问题出在 public double computeInterest(int n) { balance=balance*(Math.pow((1+rate),n/12)); return balance; } 在这种方法中,问题是我不应该使用天平,而是使用一个变量来存储答案
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个月计算利息,这源自account类中的方法:
public double computeInterest(int n)
{
balance=balance*(Math.pow((1+rate),n/12));
return balance;
}
如果我取出天平,它仍然会导致错误,因此我对这一部分感到困惑。代码
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
,balance=balance+computed\u interest
或类似的内容
此外,我还删除了不必要的括号。这不是一个错误,只是使代码可读性降低 代码
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
,balance=balance+computed\u interest
或类似的内容
此外,我还删除了不必要的括号。这不是一个错误,只是使代码可读性降低
computeInterest
应该做的就是:计算利息。不更新其他状态。或者退还余额。它应该归还利息。它确实归还(1+利率)部分的利息,但我被告知余额的第一部分应该被移除。它不归还利息。它返回余额。设置平衡,这是违反直觉的。computeInterest
应该做的就是:计算利息。不更新其他状态。或者退还余额。它应该归还利息。它确实归还(1+利率)部分的利息,但我被告知余额的第一部分应该被移除。它不归还利息。它返回余额。并设置平衡,这是违反直觉的。