用Java编写一个程序,输入某个班某门课程成绩,统计及格人数、不及格人数及课程平均分。设计一个异常类,当输入的成绩小于0或者大于100时抛出异常,程序将捕获这个异常,并作出相应处理。
时间: 2024-03-25 21:39:51 浏览: 111
好的,我来为您解答这个问题。
首先,我们需要设计一个Student类,用来存储每个学生的姓名和成绩。代码如下:
```java
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
```
接下来,我们来设计主程序。代码如下:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
int passCount = 0;
int failCount = 0;
int totalScore = 0;
System.out.print("请输入学生人数:");
int count = scanner.nextInt();
for (int i = 0; i < count; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的姓名和成绩(用空格隔开):");
String name = scanner.next();
int score = scanner.nextInt();
try {
if (score < 0 || score > 100) {
throw new ScoreException("成绩必须在0到100之间");
}
} catch (ScoreException e) {
System.out.println(e.getMessage());
continue;
}
Student student = new Student(name, score);
students.add(student);
if (score >= 60) {
passCount++;
} else {
failCount++;
}
totalScore += score;
}
double averageScore = (double) totalScore / count;
System.out.println("及格人数:" + passCount);
System.out.println("不及格人数:" + failCount);
System.out.println("课程平均分:" + averageScore);
}
}
```
在主程序中,我们首先创建了一个ArrayList用来存储所有的学生对象。然后,我们使用Scanner类从控制台获取学生的人数和每个学生的姓名和成绩。在输入学生成绩时,我们使用try-catch语句来捕获ScoreException异常,如果输入的成绩小于0或者大于100,就抛出这个异常。如果成功创建一个学生对象,就将其添加到students列表中,并统计及格人数、不及格人数和总成绩。
最后,我们计算课程平均分,并输出结果。
在上面的代码中,我们使用了一个自定义异常类ScoreException,用来表示输入的成绩不合法。代码如下:
```java
public class ScoreException extends Exception {
public ScoreException(String message) {
super(message);
}
}
```
这个异常类继承自Exception类,它包含一个构造方法,用来传递异常信息。
这就是用Java编写一个统计成绩的程序,并处理输入异常的方法。希望能帮到您!
阅读全文