自定义一个异常类ScoreException,继承自Exception类。有一个私有的成员变量message(异常提示信息,String类型);一个公有的无参数的构造方法,在方法中将message的值确定为“您输入的成绩异常,请核实!”;一个公有的方法show(),该方法的功能是输出message的值。 定义一个学生类Student,有一个私有成员变量score(成绩,double类型);一个带参数的公有方法setScore()用于设置学生的成绩,该方法声明可能抛出异常ScoreException,当设置的成绩为负数或超过100时,会抛出一个异常对象;一个公有方法getScore()用于获取学生的成绩。 在测试类Main中,创建一个Student类的对象zhangsan,尝试调用setScore()方法来设置他的成绩(成绩从键盘输入,double类型),然后调用getScore()方法获取到该成绩后再将其输出。因用户的输入存在不确定性,以上操作有可能捕捉到异常ScoreException,一旦捕捉到该异常,则调用show()方法输出异常提示。不管是否有异常,最终输出“程序结束”。使用try...catch...finally语句实现上述功能。
时间: 2024-03-24 07:40:50 浏览: 57
好的,这是一个关于自定义异常类和异常处理的问题。下面是代码实现:
```java
// 自定义异常类
class ScoreException extends Exception {
private String message; // 异常提示信息
public ScoreException() {
message = "您输入的成绩异常,请核实!";
}
public void show() {
System.out.println(message);
}
}
// 学生类
class Student {
private double score; // 成绩
// 设置学生的成绩
public void setScore(double score) throws ScoreException {
if (score < 0 || score > 100) {
throw new ScoreException();
}
this.score = score;
}
// 获取学生的成绩
public double getScore() {
return this.score;
}
}
// 测试类
class Main {
public static void main(String[] args) {
Student zhangsan = new Student();
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入学生的成绩:");
double score = scanner.nextDouble();
zhangsan.setScore(score);
System.out.println("该学生的成绩为:" + zhangsan.getScore());
} catch (ScoreException e) {
e.show();
} finally {
System.out.println("程序结束");
}
}
}
```
程序运行时,会提示用户输入学生的成绩,如果输入的成绩不合法(小于0或大于100),则会抛出ScoreException异常,程序会在catch块中捕捉到该异常,并调用其show()方法输出异常提示信息。无论是否有异常,最终都会输出“程序结束”。
阅读全文