编写类InsurancecCheck和自定义异常类AgeException。用2010年减去某人的出生年份计算其年龄。然后用年龄减去16计算其驾龄。驾龄少于4年的驾驶员,每年需缴纳2000元保险费其他人支付1000元;未满16周岁,则不需保险,并且引发异常(年龄太小,不用保险)。
时间: 2024-10-10 09:07:58 浏览: 25
f_get_age(出生日期计算年龄).rar_age 日期_f_get__uf_GetAge_Basy_出生日期计算年龄
可以创建两个类来实现这个功能:`InsuranceCheck` 和 `AgeException`。
首先,我们定义 `AgeException` 自定义异常类,它表示年龄小于16岁的情况:
```java
public class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}
```
接着,我们创建 `InsuranceCheck` 类,用于检查并计算保险费用:
```java
import java.util.Date;
class InsuranceCheck {
private Date currentDate = new Date(); // 当前日期
// 计算年龄
public int calculateAge(int birthYear) throws AgeException {
int age = currentDate.getYear() - birthYear;
if (age < 16) {
throw new AgeException("年龄太小,不需要保险");
}
return age;
}
// 计算驾龄和对应的保费
public int calculateDrivingYearsAndPremium(int birthYear, int drivingStartYear) {
int age = calculateAge(birthYear);
int drivingYears = age - (drivingStartYear - birthYear);
return drivingYears >= 4 ? drivingYears * 2000 : drivingYears * 1000;
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
try {
InsuranceCheck check = new InsuranceCheck();
int birthYear = 1995; // 假设测试者生于1995年
int drivingStartYear = 2012; // 假设驾驶开始于2012年
int premium = check.calculateDrivingYearsAndPremium(birthYear, drivingStartYear);
System.out.println("驾龄: " + premium / 2000 + " 年,保费: " + premium);
} catch (AgeException e) {
System.out.println(e.getMessage());
}
}
}
```
在这个例子中,`InsuranceCheck` 类首先检查年龄是否小于16岁,如果是则抛出 `AgeException` 异常。如果不是,它会计算驾龄并根据规则返回相应的保险费用。在主函数中,我们捕获可能出现的异常并处理它。
阅读全文