这就是我得到的。不同帐户类型(储蓄,当前和固定)的Customer类的对象的链表。每个Customer对象都有一个交易的LinkedList(另一个类)作为属性。可以进行两种交易类型,即借记(提款)或贷记(存款)。给定:一个储蓄帐户可以转为负数,而其他两个帐户则不能。不允许从固定帐户进行借记交易(无取款)。
如果帐户余额为正,则利率为0.0003;如果帐户余额为负(仅储蓄帐户可用),利率为-0.002。利息计算如下:
为了获得正利息,它基于具有
最近24小时(即从午夜到午夜)进入帐户。例如,如果
您在第0小时有$ 100,但是在第1小时有$ 50提取了$ 50
在第2小时,您会看到24小时内您的帐户中只有50美元
的一天(24小时)。在第24小时,您帐户中的金额将为$ 100加上每日
利息按$ 50计算。
对于负利息,它基于您欠的最大负钱之和
那天的银行。如果您从银行借钱,他们会向您收取利息
即使您在一分钟后退还了钱。例如,如果您的储蓄帐户有
0小时100美元,但您在22小时取出200美元,然后在小时存回1000美元
23.到今天午夜,您将不会获得任何正利息,但会向您收取
今天向银行借入100美元的负利息。
对于最初拥有566.00美元的储蓄帐户,该帐户中的交易如下:
借方:50(日期:11-09-2008),借方:500(15-09-2008);学分:200(22-09-2008);借方:500(23-09-2008)。
样本计算为:
((((566 * 1.0003 ^ 10-50)* 1.0003 ^ 4-500)* 1.0003 ^ 8 + 200-500)* 1.002 ^ 8〜= 286.17。
我得到了大约1377.68的一些数字,这显然不匹配。
这是我的储蓄帐户,但我很确定这是错误的。我的问题是在为每个客户遍历交易时如何计算利息。我的计算是错误的。因此,如果有人可以帮助我解决逻辑问题,我将不胜感激
public void update(double rate){ // Savings account interest calc
Transactions ctr = new Transactions();
Node<Transactions> counter = new Node<Transactions>(ctr);
counter=this.trans.head;
int i=0;
double negRate = -0.002;
double posRate = 0.0003;
double updatedBal = this.get_balance();
while(counter!=null){
if (updatedBal >0){
if(trans.getItem(i).AccType.equals("Crebit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ posRate),exponent-1))+trans.getItem(i).get_Amount());
}
else if(trans.getItem(i).AccType.equals("Debit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ posRate),exponent-1))-trans.getItem(i).get_Amount());
}
}
else
{
if(trans.getItem(i).AccType.equals("Crebit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ negRate),exponent-1))+trans.getItem(i).get_Amount());
}
else if(trans.getItem(i).AccType.equals("Debit")){
double exponent = Double.parseDouble(trans.getItem(i).get_Date().substring(0, 2));
updatedBal= (updatedBal*(Math.pow((1+ negRate),exponent-1))-trans.getItem(i).get_Amount());
}
}
counter=counter.next;
}
this.set_balance(updatedBal);
}
最佳答案
您的代码在两个地方都有trans.getItem(i).AccType.equals("Crebit")
。大概应该是信用。如果交易项目的AccType字段的值使用正确的拼写,则您的if
块在计算利息时将不会“看到”信贷交易,这可能会导致错误的答案。