用从语言写一个程序有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件result.txt中。
时间: 2023-12-15 20:18:44 浏览: 77
接收从键盘输入某班学生的学号、姓名、成绩,对学 生的成绩进行排序.zip
5星 · 资源好评率100%
好的,我可以使用 Java 语言为您编写一个程序来解决您的问题。代码示例如下:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
class Student {
public String id;
public String name;
public double[] scores;
public double avg_score;
public Student(String id, String name, double[] scores) {
this.id = id;
this.name = name;
this.scores = scores;
this.avg_score = (scores[0] + scores[1] + scores[2]) / 3.0;
}
public String toString() {
return String.format("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f", id, name, scores[0], scores[1], scores[2], avg_score);
}
}
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
ArrayList<Student> students = new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
System.out.printf("请输入第%d个学生的信息:\n", i + 1);
System.out.print("学号:");
String id = scanner.next();
System.out.print("姓名:");
String name = scanner.next();
double[] scores = new double[3];
for (int j = 0; j < 3; j++) {
System.out.printf("请输入第%d门成绩:", j + 1);
scores[j] = scanner.nextDouble();
}
students.add(new Student(id, name, scores));
}
// 按平均成绩降序排序
Collections.sort(students, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return Double.compare(s2.avg_score, s1.avg_score);
}
});
// 在控制台输出学生信息
System.out.println("学号\t姓名\t语文\t数学\t英语\t平均成绩");
for (Student student : students) {
System.out.println(student.toString());
}
// 将学生信息写入文件result.txt中
File file = new File("result.txt");
FileWriter writer = new FileWriter(file);
writer.write("学号\t姓名\t语文\t数学\t英语\t平均成绩\n");
for (Student student : students) {
writer.write(student.toString() + "\n");
}
writer.close();
}
}
```
您可以将此代码复制到 Java 编辑器中,并运行它。然后,您将被提示输入10个学生的信息,按照要求输出学生信息,同时将结果写入result.txt文件中。
阅读全文