用java编写一个可以重键盘接收学生成绩的程序,成绩必须介于0-100之间自定义一个成绩无效的异常(也就是超出这个区间)编写方法接收成绩并返回成绩,如果输入的是无效成绩,则触发该自定义异常
时间: 2024-10-15 11:06:11 浏览: 29
Java Fibonacci 平均成绩 笛卡尔坐标系
为了创建一个Java程序,我们可以定义一个`ScoreInvalidException`作为自定义异常,用于处理成绩超出范围的情况。然后,我们设计一个方法`inputAndCheckScore()`来接收用户输入的成绩,并检查其有效性。以下是示例代码:
```java
public class ScoreInvalidException extends Exception {
public ScoreInvalidException(String message) {
super(message);
}
}
public class StudentGradeInput {
private static final int MIN_SCORE = 0;
private static final int MAX_SCORE = 100;
public double inputAndCheckScore() throws ScoreInvalidException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生的成绩(0-100分):");
try {
double score = scanner.nextDouble();
if (score < MIN_SCORE || score > MAX_SCORE) {
throw new ScoreInvalidException("成绩无效,应处于0到100分之间");
}
return score;
} catch (InputMismatchException e) {
// 如果输入不是数字,捕获异常并提示重新输入
System.out.println("输入错误,请输入有效的分数:");
scanner.next(); // 清除非法输入
return inputAndCheckScore();
} finally {
scanner.close();
}
}
public static void main(String[] args) {
try {
StudentGradeInput studentGrade = new StudentGradeInput();
double validScore = studentGrade.inputAndCheckScore();
System.out.println("有效成绩: " + validScore);
} catch (ScoreInvalidException e) {
System.out.println(e.getMessage());
}
}
}
```
在这个程序中,`inputAndCheckScore()`方法首先尝试获取用户的输入并转换成double类型。如果输入不在有效范围内,就抛出`ScoreInvalidException`。如果用户输入非数字,我们会捕获`InputMismatchException`,清除非法输入后再次请求输入。
阅读全文