2015-09-30 2 views
0

Пятнадцать.monthyPayment()); каждый раз, когда я его запускаю, возвращается бесконечность. Я не могу понять, почему. Я считаю, что это имеет какое-то отношение к годам, потому что, если я изменю значение лет, равное определенному числу, скажем, 15, оно не вернет бесконечность. Я думал, что MyLoan пятнадцать должны изменить его на 15 для меня.Почему мой метод возвращает бесконечность?

Может ли любое тело сказать мне, почему этот код возвращает бесконечность?

public class MyLoan { 

    // instance members 
    private double amountBorrowed; 
    private double yearlyRate; 
    private int years; 
    public double A; 
    public double n = years * 12; 

    // public instance method 
    public MyLoan(double amt, double rt, int yrs) { 
     this.amountBorrowed = amt; 
     this.yearlyRate = rt; 
     this.years = yrs; 
    } 

    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 static void main(String[] args) { 

     double RATE15 = 5.75; 
     double RATE30 = 6.25; 
     double amount = 10000; 
    } 

    MyLoan fifteen = new MyLoan(amount, RATE15, 15); 

    System.out.println(fifteen.monthlyPayment()); 

} 
+0

Итак, где код для 'ежемесячного платежа'? Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам – MadProgrammer

+0

Извините! Это всего лишь фрагмент из гораздо более крупного блока кода, и я полностью забыл включить ежемесячный платеж. –

+0

A = (amountBorrowed) * ((i * (Math.pow (1 + i, n)))/((Math.pow (1 + i, n)) - 1)); это делает проблему, что именно вы хотите сделать с этим ??? –

ответ

3

В конструкторе необходимо инициализировать n.

this.years = yrs; 
this.n = yrs * 12; 

В противном случае используется значение по умолчанию для years, который 0.

Отдел по 0 приводит к Double.POSITIVE_INFINITY.

+0

спасибо !! Цените помощь. –

Смежные вопросы