用java写一个程序,要求对一个运动会成绩原始文件“results.txt”,对运动员的竞赛成绩进行排名,将结果按格式保存到输出文件“out.txt”,成绩保留3位小数。其中,results.txt文件内容为道次 号码 姓名 单位 成绩 备注 1 J2018 张三 计网 14.854 2 J1801 李四 信通 14.127 3 J5901 王五 机关二 13.320 4 J5114 赵六 继续教育 12.290 5 J1700 孙七 戏影 14.374 6 J5505 周八 后勤 15.280 7 J2101 吴九 动画 14.060 8 J5504 郑十 后勤 13.870
时间: 2024-02-20 15:56:19 浏览: 90
运动会成绩管理系统(JAVA)
4星 · 用户满意度95%
好的,以下是Java代码实现:
```java
import java.io.*;
import java.util.*;
public class ScoreRanking {
public static void main(String[] args) throws IOException {
// 读取原始文件
BufferedReader reader = new BufferedReader(new FileReader("results.txt"));
// 存储成绩信息的列表
List<Score> scores = new ArrayList<>();
// 逐行读取并解析每个运动员的成绩信息
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(" ");
int lane = Integer.parseInt(parts[0]);
String number = parts[1];
String name = parts[2];
String team = parts[3];
double time = Double.parseDouble(parts[4]);
String remark = parts.length > 5 ? parts[5] : "";
// 将成绩信息存储到列表中
Score score = new Score(lane, number, name, team, time, remark);
scores.add(score);
}
reader.close();
// 按成绩从高到低排序
scores.sort(Comparator.comparing(Score::getTime).reversed());
// 输出到文件
PrintWriter writer = new PrintWriter(new FileWriter("out.txt"));
for (int i = 0; i < scores.size(); i++) {
Score score = scores.get(i);
String output = String.format("%-2d %-6s %-8s %-6s %.3f %s", score.getLane(), score.getNumber(), score.getName(), score.getTeam(), score.getTime(), score.getRemark());
writer.println(output);
}
writer.close();
}
// 表示一个运动员的成绩信息
static class Score {
private int lane; // 道次
private String number; // 号码
private String name; // 姓名
private String team; // 单位
private double time; // 成绩
private String remark; // 备注
public Score(int lane, String number, String name, String team, double time, String remark) {
this.lane = lane;
this.number = number;
this.name = name;
this.team = team;
this.time = time;
this.remark = remark;
}
public int getLane() {
return lane;
}
public String getNumber() {
return number;
}
public String getName() {
return name;
}
public String getTeam() {
return team;
}
public double getTime() {
return time;
}
public String getRemark() {
return remark;
}
}
}
```
程序会读取名为“results.txt”的原始文件,解析每个运动员的成绩信息,并按成绩从高到低进行排序。然后,程序会将排序后的结果按照特定的格式输出到名为“out.txt”的输出文件中。输出文件中每行的格式为“道次 号码 姓名 单位 成绩 备注”,其中成绩保留3位小数。
请确保运行程序之前已经创建了名为“results.txt”的原始文件,并且输出文件的路径为程序所在目录下的“out.txt”。
阅读全文