可以用JAVA数组的方法写吗
时间: 2024-09-27 13:09:18 浏览: 16
当然可以使用Java数组的方法来实现奖学金评定的功能。由于数组可以直接操作元素,我们可以直接遍历学生数组,并使用数组方法来计算总成绩和平均成绩。以下是利用数组方法的一个简化版的示例:
```java
class Student {
int id;
String name;
int[] scores; // 假设每门课程成绩范围0-100
// 构造函数
public Student(int id, String name, int[] scores) {
this.id = id;
this.name = name;
this.scores = scores;
}
}
public class ScholarshipsArray {
public static void main(String[] args) {
int totalStudents = 20;
Student[] students = new Student[totalStudents]; // 初始化学生数组
// ...(此处同样填充学生信息)
// 学生成绩数组
int[] totalScores = new int[totalStudents];
// 计算总成绩并存入数组
for (int i = 0; i < totalStudents; i++) {
totalScores[i] = students[i].getTotalScore();
}
// 对所有学生总成绩数组进行排序
int[] sortedIndex = new int[totalStudents];
for (int i = 0; i < totalStudents; i++) {
sortedIndex[i] = i;
}
quickSort(sortedIndex, 0, totalStudents - 1, totalScores);
// 计算平均成绩并找到超过特定比例的学生
double averageScore = calculateAverage(totalScores);
for (int i : sortedIndex) {
if (students[i].getTotalScore() > averageScore * 1.2) {
System.out.println("一等奖学金:");
printStudentInfo(students[i]);
} else if (students[i].getTotalScore() > averageScore * 1.1) {
System.out.println("二等奖学金:");
printStudentInfo(students[i]);
}
}
}
// 快速排序
private static void quickSort(int[] index, int low, int high, int[] values) {
if (low < high) {
int pivotIndex = partition(index, low, high, values);
quickSort(index, low, pivotIndex - 1, values);
quickSort(index, pivotIndex + 1, high, values);
}
}
// 分区函数,用于快速排序
private static int partition(int[] index, int low, int high, int[] values) {
int pivotValue = values[high];
int i = (low - 1);
for (int j = low; j < high; j++) {
if (values[j] >= pivotValue) {
i++;
swap(index, i, j);
}
}
swap(index, i + 1, high);
return (i + 1);
}
// 交换数组元素
private static void swap(int[] index, int i, int j) {
int temp = index[i];
index[i] = index[j];
index[j] = temp;
}
// 计算平均值
private static double calculateAverage(int[] values) {
double sum = 0;
for (int value : values) {
sum += value;
}
return sum / values.length;
}
// 打印学生信息
private static void printStudentInfo(Student student) {
System.out.println("学号:" + student.id + ", 姓名:" + student.name + ", 成绩:" + Arrays.toString(student.scores));
}
}
```
这个版本中,我们首先计算了每个学生的总成绩并存储在一个单独的数组`totalScores`中。然后对这个数组进行排序,找出达到奖学金条件的学生。注意这里使用了快速排序算法对总成绩进行排序。