Нет исключений поймали? - PullRequest
0 голосов
/ 26 ноября 2011

Я очень новичок в Java, и у меня возникли некоторые проблемы с получением моего кода для перехвата и отображения исключения. Идея кода заключается в создании исключения, если любое из значений Loan равно нулю или меньше. Ниже приведен мой код, который не имеет выходных данных для исключения, несмотря на тот факт, что loan1 и loan3 имеют только нули. Любая помощь будет оценена новичком в течение шести недель. Спасибо!

package loan;

public class Loan {

    public static void main(String[] args) {
        try {
        Loan loan1 = new Loan(0, 0, 00.00);
        Loan loan2 = new Loan(5, 10, 500.00);
        Loan loan3 = new Loan(0, 0, 0.00);

        }
        catch (IllegalArgumentException ex) {
                System.out.println(ex);
        }
    }


    // declare variables for Loan class
    double annualInterestRate;
    int numberOfYears;
    double loanAmount;
    private java.util.Date loanDate;

    // Loan class
    public Loan() {
    }
    public Loan(double annualInterestRate, int numberOfYears, double loanAmount) {
        this.annualInterestRate = annualInterestRate;
        this.numberOfYears = numberOfYears;
        this.loanAmount = loanAmount;
        loanDate = new java.util.Date();
    }


    public double getAnnualInterestRate() throws IllegalArgumentException {              //exception added if value is zero or less, added on each variable
        if (annualInterestRate >= 0)
        throw new IllegalArgumentException("Interest rate cannot be zero or          negative.");
        else
            return annualInterestRate;

    }

    public void setAnnualInterestRate(double annualInterestRate) {
        this.annualInterestRate = annualInterestRate;
    }

    public int getNumberOfYears() throws IllegalArgumentException {
        if (numberOfYears >= 0)
            return numberOfYears;
        else
            throw new IllegalArgumentException("Number of years cannot be zero");
        }

    public void setNumberOfYears(int numberOfYears) {
        this.numberOfYears = numberOfYears;
    }

    public double getLoanAmount() throws IllegalArgumentException {
        if (loanAmount >= 0)
            return loanAmount;
        else
            throw new IllegalArgumentException("Loan amount cannot be zero");
    }

    public void setLoanAmount(double loanAmount) {
        this.loanAmount = loanAmount;
    }

    public double getMonthlyPayment() {
        double monthlyInterestRate = annualInterestRate/1200;
        double monthlyPayment = loanAmount * monthlyInterestRate / (1 - (Math.pow(1/(1 + monthlyInterestRate), numberOfYears *12)));
        return monthlyPayment;
        }
    public double getTotalPayment() {
        double totalPayment = getMonthlyPayment() * numberOfYears * 12;
        return totalPayment;
    }

    public java.util.Date getLoanDate() {
        return loanDate;
    }
}

Ответы [ 2 ]

3 голосов
/ 26 ноября 2011

Если вы действительно хотите, чтобы ваш конструктор выдавал исключение в каком-то условии, вы должны выглядеть так:

public Loan(double annualInterestRate, int numberOfYears, double loanAmount) {
    if ( annualInterestRate<0 ) 
        throw new IllegalArgumentException( "value for anualInterestRate is too small" );
    if ( numberOfYears<0 ) 
        throw new IllegalArgumentException( "value for numberOfYears is too small" );
    this.annualInterestRate = annualInterestRate;
    this.numberOfYears = numberOfYears;
    this.loanAmount = loanAmount;
    loanDate = new java.util.Date();
}
1 голос
/ 26 ноября 2011

Вы только генерируете исключение в методах "getter", таких как getAnnualInterestRate и т. Д. Но вы никогда не вызываете их. Либо вызовите некоторые из ваших методов получения, либо (лучше) сгенерируйте исключение из конструктора и методов установки (потому что именно здесь вы устанавливаете значения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...