1)新建一个类,并设置相关变量2)循环三个班级3)再循环录入该班级的5名学生的序号和成绩,录入学号时判断长度,录入分值时判断是否是负数4)录入完一个班级后打印出该班级的平均分及及格人数5)当全部录入完毕后计算平均分和及格人数并显示。
时间: 2024-09-30 17:10:38 浏览: 33
在Java中,你可以创建一个名为`GradeManager`的类,它有以下几个步骤:
1. **创建类和变量**:
首先,创建一个`Student`类,包含姓名(这里假设为`name`)、学号(`id`)和分数(`grade`)作为私有变量。此外,还需要一个列表(`studentsList`)来存储每个班级的学生。
```java
public class Student {
private String name;
private String id;
private int grade;
// 构造函数,getter和setter方法...
}
private List<Student> studentsList = new ArrayList<>();
```
2. **循环录入三个班级**:
使用嵌套循环,外层代表班级,内层代表学生。使用`ArrayList`的索引来表示班级内的顺序。
3. **录入学生信息**:
对于每个班级,循环五次。每次循环中,获取输入的学号和分数,检查长度和负数情况。如果不符合要求,提示用户重新输入。
4. **计算和打印班级数据**:
录入完一个班级后,计算平均分和及格人数(这里默认分数大于等于0为及格)。使用`Collections.sort()`对学生成绩排序,然后计算平均分。
```java
// ... 省略部分代码
for (int i = 1; i <= 3; i++) {
String className = "Class " + i;
for (int j = 1; j <= 5; j++) {
Scanner scanner = new Scanner(System.in);
System.out.println("For Class " + className + ", enter student " + j + "'s ID:");
id = scanner.next();
if (id.length() != 3) {
System.out.println("Invalid ID length. Please try again.");
continue;
}
System.out.print("Enter grade: ");
int grade = scanner.nextInt();
if (grade < 0) {
System.out.println("Negative grade detected. Ignoring this entry.");
continue;
}
Student student = new Student(name, id, grade);
studentsList.add(student);
// ... 继续添加其他学生的录入操作 ...
// 计算并打印班级数据
double average = calculateAverageGrade(className);
int passCount = countPassingStudents(className);
System.out.println("Average grade of " + className + ": " + average);
System.out.println("Number of students passing in " + className + ": " + passCount);
}
}
// ... 省略部分代码
private double calculateAverageGrade(String className) {
double total = 0;
for (Student student : getStudentsOfClass(className)) {
total += student.getGrade();
}
return total / studentsList.size();
}
private int countPassingStudents(String className) {
int passCount = 0;
for (Student student : getStudentsOfClass(className)) {
if (student.getGrade() >= 0) {
passCount++;
}
}
return passCount;
}
```
5. **最后的总结**:
当所有班级的信息都录入完成后,再计算整个课程的平均分和及格人数,然后打印出来。
注意,这里只展示了基本的思路,实际代码可能需要完善异常处理和其他细节。
阅读全文