You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java无Stream/HashMap/BufferedReader读取文本计算学生GPA问题

实现逻辑说明

第一步:文件读取方案

因为禁止使用BufferedReader,可以使用FileReader配合字符缓存逐行读取,或者使用Scanner类读取文本每一行,两类API均不在禁止范围内。

第二步:逐行分支处理逻辑

文件结构是固定分块的,逐行读取后按行特征匹配对应处理规则即可:

  • 空行:直接跳过,不做处理
  • 含:的元数据行:这类行存储学生基础信息、总学分统计数据,直接按:将行拆分为两部分,后半部分去除首尾空白后,存入提前定义好的对应变量即可(比如studentName、studentId、totalAttemptedCredits等,所有字段固定无需使用HashMap)
  • 课程表头行:当读取到内容包含Course Code的行时,标记后续行均为课程数据行,切换处理逻辑
  • 课程数据行:行内字段均以逗号分隔,直接按逗号拆分后,每个元素去除首尾空白即可依次获得「课程代码、课程名称、学分、成绩」四个字段值

第三步:GPA计算逻辑

因为禁止使用HashMap,可通过两个索引对齐的数组实现成绩等级到绩点的映射:

// 常见4分制绩点映射规则,可根据作业要求调整对应关系
String[] gradeLevel = {"A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "F"};
double[] gradePoint = {4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, 0.0};

拿到每门课的成绩后遍历数组匹配得到对应绩点,按如下公式计算GPA:

GPA = (每门课绩点 × 对应课程学分)的总和 ÷ 所有有效课程的学分总和

第四步:输出文件生成

使用FileWriter类,将需要输出的学生信息、计算得到的GPA等内容逐行写入目标文件即可,全程不需要用到Stream API。

内容的提问来源于stack exchange,提问作者Abdulaziz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:54:06