( IllegalArgumentException 异常)修改程序清单10-2中的 Loan 类,如果贷款总额、利率、 年数小于或等于零,则抛出 IllegalArgumentException 异常。
时间: 2023-08-17 15:03:40 浏览: 122
好的,以下是修改后的程序清单10-2中的Loan类:
```java
public class Loan {
private double annualInterestRate;
private int numberOfYears;
private double loanAmount;
public Loan(double annualInterestRate, int numberOfYears, double loanAmount) {
if (annualInterestRate <= 0 || numberOfYears <= 0 || loanAmount <= 0) {
throw new IllegalArgumentException("贷款总额、利率、年数必须大于零");
}
this.annualInterestRate = annualInterestRate;
this.numberOfYears = numberOfYears;
this.loanAmount = loanAmount;
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
if (annualInterestRate <= 0) {
throw new IllegalArgumentException("利率必须大于零");
}
this.annualInterestRate = annualInterestRate;
}
public int getNumberOfYears() {
return numberOfYears;
}
public void setNumberOfYears(int numberOfYears) {
if (numberOfYears <= 0) {
throw new IllegalArgumentException("年数必须大于零");
}
this.numberOfYears = numberOfYears;
}
public double getLoanAmount() {
return loanAmount;
}
public void setLoanAmount(double loanAmount) {
if (loanAmount <= 0) {
throw new IllegalArgumentException("贷款总额必须大于零");
}
this.loanAmount = loanAmount;
}
public double getMonthlyPayment() {
double monthlyInterestRate = annualInterestRate / 1200;
double monthlyPayment = loanAmount * monthlyInterestRate / (1 - 1 / Math.pow(1 + monthlyInterestRate, numberOfYears * 12));
return monthlyPayment;
}
public double getTotalPayment() {
double totalPayment = getMonthlyPayment() * numberOfYears * 12;
return totalPayment;
}
}
```
在构造函数、setAnnualInterestRate()、setNumberOfYears()、setLoanAmount()方法中增加了参数检查,并且如果参数小于或等于零,则抛出IllegalArgumentException异常。这样就确保了贷款总额、利率、年数必须大于零,避免了计算出现异常情况。