编写一个java程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2024-03-25 17:39:45 浏览: 59
好的,以下是一个 Java 版本的程序示例,符合您的要求:
```java
import java.util.Scanner;
class ScoreException extends Exception {
private int score;
ScoreException(int score) {
this.score = score;
}
public String toString() {
return "Invalid score: " + score;
}
}
public class ScoreRecorder {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n;
do {
System.out.print("Please input the total number of students: ");
n = scanner.nextInt();
} while (n <= 0);
int[] scores = new int[n];
int passNum = 0, failNum = 0;
for (int i = 0; i < n; i++) {
while (true) {
try {
System.out.print("Please input the score of student " + (i + 1) + ": ");
int score = scanner.nextInt();
if (score < 0 || score > 100) {
throw new ScoreException(score);
}
scores[i] = score;
if (score >= 60) {
passNum++;
} else {
failNum++;
}
break;
} catch (ScoreException e) {
System.out.println(e.toString());
} catch (Exception e) {
System.out.println("Invalid input, please input an integer.");
scanner.nextLine();
}
}
}
System.out.println("Pass: " + passNum + ", Fail: " + failNum);
}
}
```
程序中定义了一个 `ScoreException` 异常类,用于在输入无效分数时抛出异常。在 `main` 函数中,程序通过循环读取用户输入的总人数,并使用 `Scanner` 类读取用户输入的每个学生的成绩,并使用 `try-catch` 语句捕捉无效输入和 `ScoreException` 异常。如果输入的分数小于 0 或大于 100,程序会抛出 `ScoreException` 异常,并打印出错信息。如果输入的分数合法,则将其添加到 `scores` 数组中,并统计及格和不及格人数。
在主程序中,程序打印出及格人数和不及格人数。
您可以根据需要修改程序中的提示信息和异常类的定义。
阅读全文