The_dream1121 2024-05-12 02:40 采纳率: 88.2%
浏览 15
已结题

关于#java#的问题:(2)从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中(相关搜索:内容合并)

1.编程实现以下功能:
(1)从键盘输入姓名、学号、成绩,并保存到文本文件中。重复进行,直到输入#号结束。
(2)从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中。
(3)将上面两个文本文件的内容合并到一个新的文本文件中。
2.统计一个文本文件中字母'A'和'a'出现的总次数。

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-05-12 02:41
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    问题1解决方案:

    1. 从键盘输入姓名、学号、成绩,并保存到文本文件中,重复进行,直到输入#号结束。
    • 创建一个 PrintWriter 对象,用于将数据写入文件
    • 使用 while 循环不断读取键盘输入的数据,每读取一条数据,就将其写入文件
    • 当读取到 # 字符时,退出循环,关闭 PrintWriter 对象,保存数据。
    1. 从文件中读取各学生成绩,计算所有学生成绩的平均值,将成绩的最大值、最小值及平均值并存入文本文件中。
    • 创建一个 BufferedReader 对象,用于从文件中读取数据
    • 使用 while 循环读取每一行数据,将成绩转换为数字并保存到 List 中
    • 计算 List 中数字的平均值、最大值和最小值
    • 将这些值写入到文件中。
    1. 将上面两个文本文件的内容合并到一个新的文本文件中。
    • 创建两个 BufferedReader 对象,用于从两个文件中读取数据
    • 创建一个 PrintWriter 对象,用于将数据写入新的文件
    • 使用 while 循环,分别从两个文件中读取数据,将其写入新的文件中
    • 关闭 BufferedReader 与 PrintWriter 对象。

    问题2解决方案

    1. 读取文件内容

      • 创建一个 BufferedReader 对象,用于从文件中读取数据
      • 使用 while 循环读取每一行数据,将每一行的 A 和 a 字符的出现次数相加保存在一个变量中,并返回该变量作为结果。
      • 关闭 BufferedReader 对象。
    2. 输出结果

      • 调用读取文件内容的方法,得到 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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日