编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2023-12-13 20:05:59 浏览: 100
c代码-从键盘输入一个班(全班人数在15~20之间)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)录入每个学生的学号(学号:2016001~2016020)和考试成绩; (2)计算课程的总分和平均分;
5星 · 资源好评率100%
好的,以下是一个符合要求的Java程序:
```java
import java.util.Scanner;
class InvalidScoreException extends Exception {
private int score;
public InvalidScoreException(int score) {
this.score = score;
}
public String toString() {
return "Invalid Score: " + score;
}
}
public class GradeRecorder {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of students: ");
int numStudents = input.nextInt();
int numPass = 0;
int numFail = 0;
for (int i = 1; i <= numStudents; i++) {
try {
System.out.print("Enter the score for student " + i + ": ");
int score = input.nextInt();
if (score < 0 || score > 100) {
throw new InvalidScoreException(score);
}
if (score >= 60) {
numPass++;
} else {
numFail++;
}
} catch (InvalidScoreException e) {
System.out.println(e.toString());
i--;
}
}
System.out.println("Number of passing students: " + numPass);
System.out.println("Number of failing students: " + numFail);
}
}
```
程序中定义了一个 `InvalidScoreException` 类,用于处理输入成绩无效的情况。在主函数中,先通过 `Scanner` 类获取需要录入成绩的学生人数,然后通过一个 `for` 循环逐个录入成绩。在录入成绩时,程序捕捉可能抛出的异常,并执行异常处理代码。如果输入的成绩无效,程序会将当前循环计数器减 1,以便重新录入无效成绩的学生的成绩。
在程序运行时,如果输入了小于 0 或大于 100 的成绩,将会抛出 `InvalidScoreException` 异常,并且程序会在命令行输出该异常的字符串表示,即 "Invalid Score: score",其中 score 是输入的无效成绩。
程序最终输出及格学生和不及格学生的人数。
阅读全文