1.编程实现以下功能:
(1)从键盘输入姓名、学号、成绩,并保存到文本文件中。重复进行,直到输入#号结束。
(2)从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中。
(3)将上面两个文本文件的内容合并到一个新的文本文件中。
2.统计一个文本文件中字母'A'和'a'出现的总次数。
关于#java#的问题:(2)从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中(相关搜索:内容合并)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
檀越@新空间 2024-05-12 02:41关注上午好☀️☀️☀️️
本答案参考ChatGPT-3.5问题1解决方案:
- 从键盘输入姓名、学号、成绩,并保存到文本文件中,重复进行,直到输入#号结束。
- 创建一个 PrintWriter 对象,用于将数据写入文件
- 使用 while 循环不断读取键盘输入的数据,每读取一条数据,就将其写入文件
- 当读取到 # 字符时,退出循环,关闭 PrintWriter 对象,保存数据。
- 从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中。
- 创建一个 BufferedReader 对象,用于从文件中读取数据
- 使用 while 循环读取每一行数据,将成绩转换为数字并保存到 List 中
- 计算 List 中数字的平均值、最大值和最小值
- 将这些值写入到文件中。
- 将上面两个文本文件的内容合并到一个新的文本文件中。
- 创建两个 BufferedReader 对象,用于从两个文件中读取数据
- 创建一个 PrintWriter 对象,用于将数据写入新的文件
- 使用 while 循环,分别从两个文件中读取数据,将其写入新的文件中
- 关闭 BufferedReader 与 PrintWriter 对象。
问题2解决方案
-
读取文件内容
- 创建一个 BufferedReader 对象,用于从文件中读取数据
- 使用 while 循环读取每一行数据,将每一行的 A 和 a 字符的出现次数相加保存在一个变量中,并返回该变量作为结果。
- 关闭 BufferedReader 对象。
-
输出结果
- 调用读取文件内容的方法,得到 A 和 a 的出现次数。
- 将结果输出到控制台。
示例代码:
问题1:
import java.io.*; public class Main { public static void main(String[] args) throws IOException { // 创建学生信息文件 PrintWriter writer = new PrintWriter(new FileWriter("students.txt", true)); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = null; while ((line = reader.readLine()) != null) { if ("#".equals(line)) { break; } writer.println(line); } writer.close(); reader.close(); // 统计学生成绩结果文件 BufferedReader scoreReader = new BufferedReader(new FileReader("students.txt")); PrintWriter resultWriter = new PrintWriter(new FileWriter("result.txt")); double sum = 0, max = Double.MIN_VALUE, min = Double.MAX_VALUE; int count = 0; String scoreLine; while ((scoreLine = scoreReader.readLine()) != null) { String[] split = scoreLine.split(" "); double scoreDouble = Double.parseDouble(split[2]); sum += scoreDouble; max = Math.max(scoreDouble, max); min = Math.min(scoreDouble, min); count++; } resultWriter.println("最高分:" + max); resultWriter.println("最低分:" + min); resultWriter.println("平均分:" + sum / count); scoreReader.close(); resultWriter.close(); // 合并两个文件 BufferedReader reader1 = new BufferedReader(new FileReader("students.txt")); BufferedReader reader2 = new BufferedReader(new FileReader("result.txt")); PrintWriter finalWriter = new PrintWriter(new FileWriter("final.txt")); String line1, line2; while ((line1 = reader1.readLine()) != null) { finalWriter.println(line1); } while ((line2 = reader2.readLine()) != null) { finalWriter.println(line2); } finalWriter.close(); reader1.close(); reader2.close(); } }问题2:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { int count = countLetter("sample.txt", 'A') + countLetter("sample.txt", 'a'); System.out.println("A 和 a 出现的次数:" + count); } public static int countLetter(String fileName, char letter) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(fileName)); int count = 0; String line; while ((line = reader.readLine()) != null) { for (int i = 0; i < line.length(); i++) { if (line.charAt(i) == letter) { count++; } } } reader.close(); return count; } }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报