设某一个班共有N(N=20)名学生,期末考试5门课程,请编一程序评定学生的奖学金,要求打印输出一、二等奖学金学生的学号、姓名和各门课成绩。 ( 奖学金评定标准是:总成绩超过全班总平成绩20%发给一个奖学金,超过全班总平成绩10%发给二个奖学金。) 使用Java
时间: 2024-11-20 21:41:00 浏览: 18
在Java中,你可以通过以下步骤编写一个简单的程序来满足这个需求:
```java
import java.util.*;
class Student {
int id;
String name;
double[] scores; // 学生的成绩数组
// 构造函数,省略其他可能的属性
public Student(int id, String name, double[] scores) {
this.id = id;
this.name = name;
this.scores = scores;
}
// 计算总分
double getTotalScore() {
return Arrays.stream(scores).sum();
}
}
public class ScholarshipCalculator {
static void calculateScholarship(Student[] students, double totalClassAverage) {
for (Student student : students) {
double total = student.getTotalScore();
double percentageAboveAverage = (total - totalClassAverage) / totalClassAverage * 100;
if (percentageAboveAverage > 20) {
System.out.printf("学号:%d, 姓名:%s, 奖学金:一等奖\n", student.id, student.name);
} else if (percentageAboveAverage > 10) {
System.out.printf("学号:%d, 姓名:%s, 奖学金:二等奖\n", student.id, student.name);
}
}
}
public static void main(String[] args) {
// 假设这里有一个包含20个学生的数组,每个学生都有姓名和5门课程的成绩
List<Student> students = ...; // 初始化学生列表
double totalClassAverage = calculateTotalClassAverage(students); // 计算平均分
calculateScholarship(students, totalClassAverage);
}
// 辅助方法计算全班平均分
private static double calculateTotalClassAverage(List<Student> students) {
double sum = 0;
for (Student student : students) {
sum += student.getTotalScore();
}
return sum / students.size();
}
}
```
阅读全文