Java编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
时间: 2024-03-25 18:39:55 浏览: 74
好的,以下是 Java 的代码实现:
```java
import java.util.Scanner;
class InvalidScoreException extends Exception {
private double score;
public InvalidScoreException(double score) {
this.score = score;
}
@Override
public String toString() {
return "Invalid score: " + this.score;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numStudents;
int passed = 0;
int failed = 0;
System.out.print("Enter number of students: ");
numStudents = scanner.nextInt();
for (int i = 1; i <= numStudents; i++) {
double score;
while (true) {
try {
System.out.print("Enter score for student " + i + ": ");
score = scanner.nextDouble();
if (score < 0 || score > 100) {
throw new InvalidScoreException(score);
}
break;
} catch (InvalidScoreException e) {
System.out.println(e.toString());
} catch (Exception e) {
System.out.println("Invalid input, please try again");
scanner.nextLine(); // consume the remaining input
}
}
if (score >= 60) {
passed++;
} else {
failed++;
}
}
System.out.println("Number of students passed: " + passed);
System.out.println("Number of students failed: " + failed);
}
}
```
程序中定义了一个 `InvalidScoreException` 异常类,当输入的成绩小于 0 或大于 100 时,会抛出该异常对象。程序使用 `try-catch` 语句捕捉这个异常,并调用 `toString` 方法获取当前无效分数值,然后输出一个此分数无效的字符串。程序还使用了一个 `while` 循环来确保输入的成绩是有效的。
程序的主逻辑是 `main` 函数,它使用一个 `for` 循环来依次录入每个学生的成绩,并统计及格人数和不及格人数。最后,程序输出及格人数和不及格人数。
阅读全文