编写一个程序,输入某个班某门课程成绩,统计及格人数、不及格人数及课程平均分。设计一个异常类,当输入的成绩小于0或者大于100时抛出异常,程序将捕获这个异常,并作出相应处理。java
时间: 2024-11-27 13:17:13 浏览: 9
编写一个Java程序,首先需要定义一个`StudentScore`类,用于存储学生姓名和成绩,以及一个异常类`InvalidScoreException`。然后,我们可以创建一个`CourseStatistics`类,来计算及格人数、不及格人数和平均分。以下是程序的基本结构:
```java
// 异常类
class InvalidScoreException extends Exception {
public InvalidScoreException(String message) {
super(message);
}
}
// 学生成绩类
class StudentScore {
private String name;
private double score;
public StudentScore(String name, double score) throws InvalidScoreException {
if (score < 0 || score > 100) {
throw new InvalidScoreException("分数无效,应介于0到100之间");
}
this.name = name;
this.score = score;
}
// 提供获取名字和成绩的方法
public String getName() { return name; }
public double getScore() { return score; }
}
// 课程统计类
public class CourseStatistics {
private List<StudentScore> scores;
public CourseStatistics(List<StudentScore> scores) {
this.scores = scores;
}
public void calculate() {
int totalStudents = scores.size();
int passedCount = 0;
int failedCount = 0;
double sum = 0;
for (StudentScore student : scores) {
if (student.getScore() >= 60) {
passedCount++;
} else {
failedCount++;
}
sum += student.getScore();
}
double average = (totalStudents > 0) ? sum / totalStudents : 0;
System.out.println("及格人数: " + passedCount);
System.out.println("不及格人数: " + failedCount);
System.out.println("平均分: " + average);
}
public static void main(String[] args) {
try {
// 创建一些示例成绩
List<StudentScore> students = new ArrayList<>();
students.add(new StudentScore("张三", 85));
students.add(new StudentScore("李四", 95));
students.add(new StudentScore("王五", 70)); // 这里会抛出异常
CourseStatistics courseStats = new CourseStatistics(students);
courseStats.calculate();
} catch (InvalidScoreException e) {
System.out.println("错误: " + e.getMessage());
}
}
}
```
在这个程序中,用户在主函数中创建了几个`StudentScore`实例,并传递给`CourseStatistics`。如果输入的成绩无效,`StudentScore`构造函数会抛出`InvalidScoreException`,该异常会在`main`函数中被捕获并处理。
阅读全文