Java读取文件随机点名,输入成绩并存放在被点人的后面
时间: 2024-03-07 14:50:02 浏览: 56
好的,这是一个需要读取文件、随机生成数字、输入数据、写入文件的综合问题。我可以给您提供一个大致思路:
1. 读取文件中的所有名字,存放在一个字符串数组中。
2. 使用随机数生成器,随机生成一个数字,作为被点名人的索引。
3. 输出被点名人的名字,并提示输入成绩。
4. 读取输入的成绩。
5. 将被点名人的名字和成绩写入文件中,紧跟在被点名人的后面。
以下是一个示例代码:
```java
import java.io.*;
public class RandomName {
public static void main(String[] args) {
String[] names = readNamesFromFile("names.txt"); // 读取文件中的所有名字
int randomIndex = (int) (Math.random() * names.length); // 随机生成一个数字,作为被点名人的索引
String selectedName = names[randomIndex]; // 被点名的人的名字
System.out.println("被点名的人是:" + selectedName);
try {
// 读取原文件
BufferedReader reader = new BufferedReader(new FileReader("scores.txt"));
String line;
StringBuilder content = new StringBuilder();
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
reader.close();
// 在被点名人的后面插入新的成绩
int index = content.indexOf(selectedName) + selectedName.length();
String score = inputScore();
content.insert(index, " " + score);
// 将修改后的内容写回文件中
BufferedWriter writer = new BufferedWriter(new FileWriter("scores.txt"));
writer.write(content.toString());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static String[] readNamesFromFile(String filename) {
try {
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line;
StringBuilder content = new StringBuilder();
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
reader.close();
return content.toString().split("\n");
} catch (IOException e) {
e.printStackTrace();
return new String[0];
}
}
private static String inputScore() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入成绩:");
return reader.readLine();
}
}
```
其中,`names.txt` 文件中存放着所有的名字,每行一个。`scores.txt` 文件是一个空文件,用于存放成绩。程序会在 `scores.txt` 文件的最后面添加新的成绩,格式为“名字 成绩”。
阅读全文