编写一个java程序,用于输入某个班级某门课程的成绩,并统计及格人数、不及格人数以及课程的平均分。为了处理输入成绩的不合理情况(即成绩小于0或大于100),设计一个自定义异常类,当检测到这种无效成绩时抛出异常,并由程序捕获处理。
时间: 2024-11-30 18:28:34 浏览: 0
学生成绩管理系统 Mysql,学生成绩管理系统mysql课程设计,Java
5星 · 资源好评率100%
在Java中,我们可以创建一个简单的控制台应用程序来满足这个需求。首先,我们需要定义一个`Score`类来表示单个学生的成绩,并包含一个静态方法`checkScore`来检查成绩是否合理。然后,我们会定义一个`GradeStatistics`类来收集并计算成绩信息。接下来是一个例子:
```java
// 自定义异常类
class InvalidScoreException extends Exception {
public InvalidScoreException(String message) {
super(message);
}
}
// 学生成绩类
public class Score {
private int score;
public Score(int score) throws InvalidScoreException {
if (score < 0 || score > 100) {
throw new InvalidScoreException("Invalid score! Scores must be between 0 and 100.");
}
this.score = score;
}
public int getScore() {
return score;
}
}
// 成绩统计类
public class GradeStatistics {
private static int totalScores = 0;
private static int passCount = 0;
private static int failCount = 0;
public static void collectScore(Score score) {
totalScores += score.getScore();
if (score.getScore() >= 60) { // 及格线通常设为60
passCount++;
} else {
failCount++;
}
}
public static double calculateAverage() {
if (totalScores == 0) {
throw new IllegalStateException("No scores collected yet.");
}
return (double) totalScores / passCount;
}
}
// 主函数
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter number of students:");
int numStudents = scanner.nextInt();
for (int i = 0; i < numStudents; i++) {
System.out.println("Enter score for student " + (i+1) + ":");
try {
int score = scanner.nextInt();
Score studentScore = new Score(score);
GradeStatistics.collectScore(studentScore);
} catch (InvalidScoreException e) {
System.err.println(e.getMessage());
}
}
try {
double average = GradeStatistics.calculateAverage();
System.out.printf("Average score: %.2f%n", average);
System.out.println("Pass count: %d, Fail count: %d%n", GradeStatistics.passCount, GradeStatistics.failCount);
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
}
scanner.close();
}
}
```
在这个程序中,用户可以输入学生数量和他们的分数。如果输入的分数不在有效范围内,会抛出`InvalidScoreException`,在主函数中被捕获并显示错误消息。
阅读全文