Java作业:异常处理实验
NumberFormatException异常
ArrayIndex0utBoundsException异常
Illega1ArgumentException异常
IllegalTriangleException异常
课本426页12.1;
代码
结果
课本427页12.3;
代码
结果
课本427页12.4;
代码
package leiPackage;
class NewLoan {
private double annualInterestRate;
private int numOfYears;
private double loanAmount;
public NewLoan() {
this(7.5, 30, 100000);
}
public NewLoan(double annualInterestRate, int numOfYears, double loanAmount) {
if (annualInterestRate <= 0)
throw new IllegalArgumentException("Annual interest rate must be positive.");
if (numOfYears <= 0)
throw new IllegalArgumentException("Number of years must be positive.");
if (loanAmount <= 0)
throw new IllegalArgumentException("Loan amount must be positive.");
setAnnualInterestRate(annualInterestRate);
setNumOfYears(numOfYears);
setLoanAmount(loanAmount);
}
public double getAnnualInterestRate() {
return annualInterestRate;
}
public void setAnnualInterestRate(double annualInterestRate) {
if (annualInterestRate <= 0)
throw new IllegalArgumentException("Annual interest rate must be positive.");
this.annualInterestRate = annualInterestRate;
}
public int getNumOfYears() {
return numOfYears;
}
public void setNumOfYears(int numOfYears) {
if (numOfYears <= 0)
throw new IllegalArgumentException("Number of years must be positive.");
this.numOfYears = numOfYears;
}
public double getLoanAmount() {
return loanAmount;
}
public void setLoanAmount(double loanAmount) {
if (loanAmount <= 0)
throw new IllegalArgumentException("Loan amount must be positive.");
this.loanAmount = loanAmount;
}
public double monthlyPayment() {
double monthlyInterestRate = annualInterestRate / 1200;
return loanAmount * monthlyInterestRate / (1 - (Math.pow(1 / (1 + monthlyInterestRate), numOfYears * 12)));
}
public double totalPayment() {
return monthlyPayment() * numOfYears * 12;
}
}
public class LoanException {
public static void main(String[] args) {
try {
new NewLoan(7.5, 30, 100000);
NewLoan m = new NewLoan(-1, 3, 3);
new NewLoan(7.5, 30, 20000);
} catch (Exception ex) {
System.out.println(ex);
}
System.out.println("End of test");
}
}
结果
课本427页12.5;
代码
package leiPackage;
public class IllegalTriangleExp {
public static void main(String[] args) {
try {
System.out.println("测试t1:");
TriangleWithException t1 = new TriangleWithException(1.5, 3, 4);
System.out.println("Perimeter of t1: " + t1.getPerimeter());
System.out.println("Area of t1: " + t1.getArea());
System.out.println("t1测试结束 ");
System.out.println();
System.out.println("测试t2:");
TriangleWithException t2 = new TriangleWithException(1, 2, 4);
System.out.println("Perimeter for t2: " + t2.getPerimeter());
System.out.println("Area for t2: " + t2.getArea());
System.out.println("t2测试结束 ");
} catch (IllegalTriangleException ex) {
System.out.println("错误:非法三角形,存在两边之和小于第三边");
System.out.println("Side1: " + ex.getSide1() + "\tSide2: " + ex.getSide2() + "\tSide3: " + ex.getSide3());
}
}
}
class IllegalTriangleException extends Exception {
private double side1, side2, side3;
public IllegalTriangleException(double side1, double side2, double side3, String s) {
super(s);
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
}
// 为了避免与之前题目已定义的三角形类发生命名冲突 将新的三角形类命名为TrianlgeWithException,
class TriangleWithException extends Object {
double side1, side2, side3;
/**Construct a triangle with the specified sides */
public TriangleWithException(double side1, double side2, double side3) throws IllegalTriangleException {
//Implement it
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
if (side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1)
throw new IllegalTriangleException(side1, side2, side3,
"存在两边之和小于第三边");
}
public double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
public double getPerimeter() {
return side1 + side2 + side3;
}
@Override
public String toString() {
return "Triangle: side1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;
}
}