编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。 输入格式: 从键盘中输入学生人数n 从键盘中输入第1个学生的成绩 从键盘中输入第2个学生的成绩 ... 从键盘中输入第n个学生的成绩 (注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。) 输出格式: 显示及格总人数 显示不及格总人数 输入样例: 在这里给出一组输入。例如: 3 100 30 60 输出样例: 在这里给出相应的输出。例如: 2 1 输入样例: 在这里给出一组输入。例如: 2 200 69 30 输出样例: 在这里给出相应的输出。例如: 200invalid! 1 1
时间: 2024-03-24 08:41:10 浏览: 51
请见下面的代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int pass = 0, fail = 0;
for(int i = 1; i <= n; i++) {
try {
int score = sc.nextInt();
if(score < 0 || score > 100) {
throw new ScoreException(score);
}
if(score >= 60) {
pass++;
} else {
fail++;
}
} catch(ScoreException e) {
System.out.println(e.toString());
i--;
}
}
System.out.println(pass);
System.out.println(fail);
}
}
class ScoreException extends Exception {
private int score;
public ScoreException(int score) {
this.score = score;
}
public String toString() {
return score + "invalid!";
}
}
```
我们在主方法中使用了一个 `for` 循环来进行成绩的录入。对于每个成绩,我们使用了 `try-catch` 语句进行异常处理。当输入的成绩小于 0 或大于 100 时,我们抛出一个 `ScoreException` 异常,并将其信息设置为该分数无效。在 `catch` 语句中,我们捕获了这个异常,并打印出其信息,然后将计数器 `i` 减 1,以便重新输入该成绩。同时,我们还根据成绩是否及格,统计了及格人数 `pass` 和不及格人数 `fail`。最后,我们输出这两个计数器的值,即及格总人数和不及格总人数。
另外,我们还定义了一个 `ScoreException` 异常类,用于处理输入的无效分数。这个类继承自 `Exception` 类,并包含了一个成员变量 `score`,用于保存无效分数的值。我们在该类中重写了 `toString()` 方法,以便在程序中输出该异常的信息。
阅读全文