2.现在多数学校的成绩管理都由计算机进行管理,这就需要有相应的应用程序,编写成绩管理应用程序,有成绩录入模块。成绩录入过程中,难免出现录入数据的类型出现错误,或录入的成绩不在合理的范围。在录入过程中,若出现上述错误,程序应该如何处理? 请你根据上述问题,合理设计相关异常类,并在录入成绩中,根据录入的数据,捕获异常并进行处理。
时间: 2023-12-09 10:02:27 浏览: 55
根据题目要求,我们需要设计两个异常类,一个用于处理数据类型错误,一个用于处理成绩范围错误。具体实现可以参考以下代码:
```java
package grade;
public class GradeManager {
public static void main(String[] args) {
try {
Grade[] grades = new Grade[3];
grades[0] = new Grade("张三", 85);
grades[1] = new Grade("李四", "90");
grades[2] = new Grade("王五", 110);
// 输出成绩单
for (Grade grade : grades) {
System.out.println(grade);
}
} catch (NumberFormatException e) {
System.out.println("成绩格式不正确!");
} catch (IllegalArgumentException e) {
System.out.println("成绩不在合理的范围内!");
}
}
}
class Grade {
private String name;
private int score;
public Grade(String name, int score) throws IllegalArgumentException {
if (score < 0 || score > 100) {
throw new IllegalArgumentException();
}
this.name = name;
this.score = score;
}
public Grade(String name, String score) throws NumberFormatException, IllegalArgumentException {
int s = Integer.parseInt(score);
if (s < 0 || s > 100) {
throw new IllegalArgumentException();
}
this.name = name;
this.score = s;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public String toString() {
return name + ": " + score;
}
}
class NumberFormatException extends Exception {
private static final long serialVersionUID = 1L;
public NumberFormatException() {
super("成绩格式不正确!");
}
}
class IllegalArgumentException extends Exception {
private static final long serialVersionUID = 1L;
public IllegalArgumentException() {
super("成绩不在合理的范围内!");
}
}
```
在上面的代码中,我们设计了两个异常类 NumberFormatException 和 IllegalArgumentException,分别用于处理数据类型错误和成绩范围错误。在 Grade 类的两个构造函数中,我们根据输入的成绩检查其是否合法,如果不合法就抛出相应的异常。在 main 函数中,我们创建了一个包含三个成绩的数组,并分别使用两个构造函数初始化其中的成绩。如果构造函数抛出异常,就捕获并输出异常信息。最后,我们输出整个成绩单,包括每个学生的姓名和成绩。