写一个程序,计算出在12个月内还清信用卡余额所需的最低固定月还款额。通过固定的每月付款,我们指的是每月不会改变的单个数字,而是每月支付的固定金额。
以下变量包含如下所述的值:
余额-信用卡上的未偿还余额
annualInterestRate -以小数表示的年利率
假设利息根据月末的余额按月复利(在支付该月的款项后)。每月付款必须是10美元的倍数,并且在所有月份都是相同的。请注意,使用此支付方案,余额有可能变为负数,这是可以的。以下是所需数学运算的摘要:
月利率=(年利率)/ 12.0
月未付余额=(上一次余额)-(月最低还款额)
每月更新余额=(月度未付余额)+(月利率x月未付余额)
=================================================
测试用例1:
输入你的余额: 3329
输入您的年利率: 0.2
最低支付:310美元
测试用例2:
输入你的余额: 4773
输入您的年利率: 0.2
最低支付:440美元
测试用例3:
输入你的余额: 3926
输入您的年利率: 0.2
最低付款:360美元
从每月10美元开始,计算余额是否会以这种方式在一年内还清(一定要考虑每月累积的利息-这意味着10* 12不起作用).If 10美元的月还款不足以在一年内还清债务,每月增加10美元并重复。
这就是我所拥有的,当我放入余额和利率时,我不能让程序在测试用例中等于最低付款。我还必须使用嵌套循环。
import java.util.Scanner;
public class MinPayment {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter your balance: ");
double balance = input.nextDouble();
System.out.print("Enter your Annual Interest Rate: ");
double rate = input.nextDouble();
double i = 1;
rate = rate / 12.0;
double payment = 0;
while (i <= 12) {
i++;
balance = balance + (rate * balance);
while (balance >= 0) {
payment += 10;
balance = balance - payment;
}
}
System.out.printf("Lowest Payment: $%.0f", payment);
}
}发布于 2015-02-20 04:47:28
double monthlyRate = annualRate / 12.0;
double monthlyUnpaidBalance;
double prevBalance=balance;
double payment=10;
boolean minPaymentReached=false;
while(true)
{
prevBalance=balance;
for(int i=0;i<12;i++)
{
monthlyUnpaidBalance=prevBalance-payment;
if(monthlyUnpaidBalance<=0)
{
minPaymentReached=true;
break;
}
prevBalance=monthlyUnpaidBalance+(monthlyRate*monthlyUnpaidBalance);
}
if(minPaymentReached)
{
break;
}
payment=payment+10;
}通过将临时变量设置为等于balance,我们保留了初始值,并且能够在while(true)循环开始时将'prevBalance‘设置回balance
发布于 2015-02-20 06:04:20
我认为误差在payment变量中,它增加了10,然后再次从余额中减去。
int i = 1; // Make it an int. Name it 'month'.
rate /= 12.0;
double payment = 0; // totalPayment
final double SINGLE_PAYMENT = 10;
while (i <= 12) {
i++;
balance += rate * balance;
if (balance >= SINGLE_PAYMENT) { // Not while, this month only, not 0
payment += SINGLE_PAYMENT;
balance -= SINGLE_PAYMENT;
}
}速率逻辑需要您考虑。
https://stackoverflow.com/questions/28616355
复制相似问题