编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2024-03-18 11:39:11 浏览: 83
好的,这是一个 Java 程序,用于录入一个班的成绩并进行统计。在程序中,我们用一个数组来存储成绩,用一个变量来记录总人数,用两个变量来记录及格人数和不及格人数。程序中使用了一个自定义异常类 InvalidScoreException,用于处理输入无效成绩的情况。以下是程序代码:
```java
import java.util.Scanner;
class InvalidScoreException extends Exception {
private int score;
public InvalidScoreException(int score) {
this.score = score;
}
public String toString() {
return score + " 是一个无效分数,请输入 0-100 之间的分数。";
}
}
public class GradeBook {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入班级总人数:");
int n = sc.nextInt();
int[] grades = new int[n];
int pass = 0, fail = 0;
for (int i = 0; i < n; i++) {
System.out.print("请输入第 " + (i + 1) + " 位同学的成绩:");
int score = sc.nextInt();
try {
if (score < 0 || score > 100) {
throw new InvalidScoreException(score);
}
grades[i] = score;
if (score >= 60) {
pass++;
} else {
fail++;
}
} catch (InvalidScoreException e) {
System.out.println(e.toString());
i--;
}
}
System.out.println("总人数:" + n);
System.out.println("及格人数:" + pass);
System.out.println("不及格人数:" + fail);
}
}
```
在程序中,我们首先输入班级总人数,然后使用 for 循环逐个输入每位同学的成绩。在输入成绩时,我们使用 try-catch 语句捕捉可能抛出的 InvalidScoreException 异常,如果发现输入的成绩无效,就会抛出该异常,并执行 catch 语句块中的代码。在 catch 语句块中,我们输出异常的信息,并让循环变量 i 减一,以便重新输入该同学的成绩。
在程序的最后,我们输出总人数、及格人数和不及格人数。
阅读全文