用java写一个程序2.对一个运动会成绩原始文件“results.txt”,对运动员的竞赛成绩进行排名,将结果按格式保存到输出文件“out.txt”,成绩保留3位小数。results.txt文件内容为项目:男子100米预决赛 道次 号码 姓名 单位 成绩 备注 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
时间: 2023-12-31 09:07:04 浏览: 26
好的,我可以帮你编写这个程序。以下是Java代码:
```java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 读取文件
ArrayList<Athlete> athletes = new ArrayList<>();
try {
File file = new File("results.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] fields = line.split(" ");
String event = fields[0];
int lane = Integer.parseInt(fields[1]);
String number = fields[2];
String name = fields[3];
String unit = fields[4];
double score = Double.parseDouble(fields[5]);
String comment = fields[6];
Athlete athlete = new Athlete(event, lane, number, name, unit, score, comment);
athletes.add(athlete);
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
// 排序
Collections.sort(athletes);
// 写入文件
try {
FileWriter writer = new FileWriter("out.txt");
for (int i = 0; i < athletes.size(); i++) {
Athlete athlete = athletes.get(i);
String line = String.format("%s %d %s %s %s %.3f %s\n", athlete.getEvent(), athlete.getLane(),
athlete.getNumber(), athlete.getName(), athlete.getUnit(), athlete.getScore(),
athlete.getComment());
writer.write(line);
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Athlete implements Comparable<Athlete> {
private String event;
private int lane;
private String number;
private String name;
private String unit;
private double score;
private String comment;
public Athlete(String event, int lane, String number, String name, String unit, double score, String comment) {
this.event = event;
this.lane = lane;
this.number = number;
this.name = name;
this.unit = unit;
this.score = score;
this.comment = comment;
}
public String getEvent() {
return event;
}
public int getLane() {
return lane;
}
public String getNumber() {
return number;
}
public String getName() {
return name;
}
public String getUnit() {
return unit;
}
public double getScore() {
return score;
}
public String getComment() {
return comment;
}
@Override
public int compareTo(Athlete other) {
if (this.score < other.score) {
return 1;
} else if (this.score > other.score) {
return -1;
} else {
return 0;
}
}
}
```
这个程序会读取文件“results.txt”,将运动员的竞赛成绩进行排名,然后将结果按格式保存到输出文件“out.txt”,成绩保留3位小数。
请注意,在排序时,我使用了Java中的`Collections.sort()`方法,它可以很方便地对一个`ArrayList`进行排序。我还实现了`Comparable`接口,这样就可以直接对`Athlete`对象进行排序了。
你只需要将这段代码复制到你的Java IDE中,并将“results.txt”文件放到正确的位置,然后运行程序,就可以生成“out.txt”文件了。