java中用do…while循环,三个班级,每班5人,按班级分别依次录入学号和分数,求该班的平均分、及格人数,完整代码。
时间: 2024-10-01 13:10:14 浏览: 34
在Java中,我们可以使用do…while循环结合嵌套循环来实现这个需求。假设有一个简单的Student类表示学生信息,包含学号和分数属性,以及一个静态方法`getAverage()`计算平均分和`isPassing()`判断是否及格(这里默认60分为及格线)。以下是完整的示例代码:
```java
import java.util.ArrayList;
import java.util.List;
// 假设有一个名为Student的类
class Student {
int id;
int score;
// 构造函数和相关方法省略
public static double getAverage(List<Student> students) {
if (students.isEmpty()) return 0;
double sum = 0;
for (Student student : students) {
sum += student.score;
}
return sum / students.size();
}
public static int isPassing(Student student) {
return student.score >= 60 ? 1 : 0; // 返回1代表及格,0代表不及格
}
}
public class Main {
public static void main(String[] args) {
List<Student> studentsList = new ArrayList<>();
int class1Size = 5, class2Size = 5, class3Size = 5;
int totalStudents = class1Size + class2Size + class3Size;
int passedCount = 0;
int currentClass = 1; // 当前班级编号
do {
System.out.println("请输入" + currentClass + "班学生的学号和分数(输入-1结束):");
for (int i = 0; i < currentClass * 5 && i < totalStudents; i++) {
Scanner scanner = new Scanner(System.in);
int id;
while (!scanner.hasNextInt()) { // 检查输入是否为整数
System.out.println("无效的输入,请输入学号:");
id = scanner.nextInt();
}
int score;
while (!scanner.hasNextInt()) { // 检查输入是否为整数
System.out.println("无效的输入,请输入分数:");
score = scanner.nextInt();
}
Student student = new Student(); // 创建新学生实例
student.id = id;
student.score = score;
studentsList.add(student);
if (student.isPassing()) passedCount++; // 累计及格人数
}
System.out.println("当前班级 (" + currentClass + ") 平均分: " + Student.getAverage(studentsList.subList(0, currentClass * 5)));
System.out.println("当前班级 (" + currentClass + ") 及格人数: " + passedCount);
currentClass++;
} while (currentClass <= 3); // 当所有班级数据输入完毕
// 结果总结...
}
}
```
阅读全文