Java作业:异常处理实验

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;
	}
}

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值