簡體   English   中英

Java我的貸款類別公式返回無窮大

[英]Java my loan class formula is returning infinity

我的代碼運行得很好,除了我每月貸款計算器的返回值。 它會繼續為我的每月付款和總付款返回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! **********");

} 

}

有很多計算興趣的方法,最常見的是

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

您應該自己進行調試,但是我會給您一個提示。 1 ^ n是什么(n是一個正整數)? 您在代碼中的哪里使用此構造?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM