Java我的贷款类公式正在返回无穷大

时间:2013-10-03 17:35:57

标签: java

我的代码运行完美,除了我每月贷款计算器的返回值。它继续为我的每月付款和总付款返回Infinity。请帮助配方。这是一个功课。我需要知道的是,我是否正在错误地实施公式。我觉得它在某种程度上试图除以0然后返回无穷大,但我可能是错的。

public class MyLoan
{

private double amountBorrowed;
private double yearlyRate;
private int years;

public double A;
public double n = years * 12;

public MyLoan(double amt, double rt, int yrs)
{
    amountBorrowed = amt;
    yearlyRate = rt;
    years = yrs;
}
public double getAmountBorrowed()
{
    return amountBorrowed;
}

public double getYearlyRate()
{
    return yearlyRate;
}

public int getYears()
{
    return years;
}

public double monthlyPayment()
{
    double i = (yearlyRate / 100) / 12;

    A = (amountBorrowed) * (i * Math.pow(1+i, n)) / (Math.pow(1+i, n) -1);

    return A;
}

public double totalPayment()
{
    return A * (years * 12);
}

public String toString()
{
    return "Loan: " +  "$" + amountBorrowed + " at " + yearlyRate + " for " + years + " years";
}



public static void main(String[] args)
{

final double RATE15 = 5.75;
final double RATE30 = 6.25;


StdOut.println("***** Welcome to the Loan analyzer! *****");

String ans = "Y";

do {
  StdOut.print("\n  Enter the principle amount to borrow: ");
  double amount = StdIn.readDouble();


  MyLoan fifteenYears = new MyLoan(amount, RATE15, 15);
  MyLoan thirtyYears = new MyLoan(amount, RATE30, 30);

  double amount15 = fifteenYears.monthlyPayment();
  double total15 = fifteenYears.totalPayment();
  double amount30 = thirtyYears.monthlyPayment();
  double total30 = thirtyYears.totalPayment();

  StdOut.println("===========ANALYSES==========");
  StdOut.println(fifteenYears);
  StdOut.println("Monthly payment = " + "$" + amount15);
  StdOut.println("Total payment = " + "$" + total15);

  StdOut.println("");
  StdOut.println("");

  StdOut.println(thirtyYears);
  StdOut.println("Monthly payment = " + "$" + amount30);
  StdOut.println("Total payment = " + "$" + total30);
  StdOut.println("=============================");



  StdOut.print("\n      ** Do you want to continue (y/n)? ");
  ans = StdIn.readString();


} while (ans.toUpperCase().equals("Y"));

StdOut.println("\n********** Thank you. Come again! **********");

} 

}

2 个答案:

答案 0 :(得分:0)

有很多方法可以计算兴趣,最常见的只是

A = amountBorrowed * (yearlyRate / 100) / 12;

答案 1 :(得分:0)

你应该自己调试一下,但我会给你一个提示。什么是1 ^ n(其中n是正整数)?在您的代码中,您使用此构造吗?