使用java编写分别生成3个教师,测试构造方法的异常抛出情况 ,每个教师分别增加、减少工资,测试方法的异常 ,显示教师年收入
时间: 2024-03-18 19:38:59 浏览: 15
好的,我来为您展示如何使用 Java 编写这个程序。
首先,需要定义一个 Teacher 类,代码如下:
```java
public class Teacher {
private String name;
private int age;
private double salary;
public Teacher(String name, int age, double salary) throws IllegalArgumentException {
if (age < 0 || salary < 0) {
throw new IllegalArgumentException("年龄和工资必须大于等于0!");
}
this.name = name;
this.age = age;
this.salary = salary;
}
public void increaseSalary(double amount) throws IllegalArgumentException {
if (amount < 0) {
throw new IllegalArgumentException("加薪金额必须大于等于0!");
}
this.salary += amount;
}
public void decreaseSalary(double amount) throws IllegalArgumentException {
if (amount < 0) {
throw new IllegalArgumentException("减薪金额必须大于等于0!");
}
if (this.salary - amount < 0) {
throw new IllegalArgumentException("减薪金额不能大于当前工资!");
}
this.salary -= amount;
}
public double getAnnualIncome() {
return this.salary * 12;
}
}
```
在这个类中,我们定义了教师的姓名、年龄和工资三个属性。构造方法中使用了异常机制,如果传入的年龄或工资小于 0,就会抛出 IllegalArgumentException 异常。
增加和减少工资的方法中也使用了异常机制,如果传入的金额小于 0,则抛出 IllegalArgumentException 异常;如果减少工资后工资为负数,则也会抛出 IllegalArgumentException 异常。
最后,我们定义了一个 getAnnualIncome() 方法,用于计算教师的年收入。
接下来,我们来编写一个测试类,用于测试 Teacher 类的各个方法。代码如下:
```java
public class TeacherTest {
public static void main(String[] args) {
try {
Teacher teacher1 = new Teacher("张三", 25, 5000);
Teacher teacher2 = new Teacher("李四", -30, 6000);
Teacher teacher3 = new Teacher("王五", 35, -7000);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
Teacher teacher4 = new Teacher("赵六", 40, 8000);
try {
teacher4.increaseSalary(-1000);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
teacher4.increaseSalary(2000);
try {
teacher4.decreaseSalary(-3000);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
try {
teacher4.decreaseSalary(10000);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
System.out.println("赵六的年收入为:" + teacher4.getAnnualIncome() + "元");
}
}
```
在这个测试类中,我们首先测试了 Teacher 类的构造方法的异常情况,分别传入了不合法的年龄和工资,捕获 IllegalArgumentException 异常并输出异常信息。
接着我们创建了一个合法的教师对象 teacher4,并测试了 increaseSalary() 和 decreaseSalary() 方法的异常情况,同样捕获 IllegalArgumentException 异常并输出异常信息。
最后我们输出了赵六的年收入。
运行这个测试类,输出如下:
```
年龄和工资必须大于等于0!
加薪金额必须大于等于0!
减薪金额不能大于当前工资!
赵六的年收入为:120000.0元
```
可以看到,测试结果符合预期,Teacher 类的各个方法都能正常工作,并能处理异常情况。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)