酷代码 AI
菜单
服务商

Java实现学生成绩计算:避免陷阱,精准输出总分与平均分

```java import java.util.*; class Chengji { int pingshi; int qimo; public Chengji(int pingshi, int qimo) { this.pingshi = pingshi; this.qimo = qimo; } // 计算总成绩:平时*0.4 + 期末*0.6,保留整数部分(直接舍去小数) public int getZong() { return (int)(pingshi * 0.4 + qimo * 0.6); } } class Xuesheng { String xuehao; String xingming; Chengji yuwen; Chengji shuxue; Chengji wuli; public Xuesheng(String xuehao, String xingming) { this.xuehao = xuehao; this.xingming = xingming; } // 设置对应科目的成绩 public void setChengji(String kecheng, Chengji chengji) { if ("语文".equals(kecheng)) { yuwen = chengji; } else if ("数学".equals(kecheng)) { shuxue = chengji; } else if ("物理".equals(kecheng)) { wuli = chengji; } } // 计算总分 public int getTotalScore() { return yuwen.getZong() + shuxue.getZong() + wuli.getZong(); } // 计算平均分,保留两位小数,四舍五入 public double getAverageScore() { return Math.round(getTotalScore() * 100.0 / 3) / 100.0; } } public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Map<String, Xuesheng> xueshengMap = new LinkedHashMap<>(); // 保持输入顺序 while (sc.hasNextLine()) { String line = sc.nextLine().trim(); if (line.isEmpty()) break; String[] parts = line.split(" "); String xuehao = parts[0]; String xingming = parts[1]; String kecheng = parts[2]; int pingshi = Integer.parseInt(parts[3]); int qimo = Integer.parseInt(parts[4]); // 获取或创建学生对象 Xuesheng xs = xueshengMap.get(xuehao); if (xs == null) { xs = new Xuesheng(xuehao, xingming); xueshengMap.put(xuehao, xs); } // 创建成绩对象并设置到对应科目 Chengji cj = new Chengji(pingshi, qimo); xs.setChengji(kecheng, cj); } // 按输入顺序输出每个学生的总分和平均分 for (Xuesheng xs : xueshengMap.values()) { int total = xs.getTotalScore(); double avg = xs.getAverageScore(); System.out.printf("%s %s %d %.2f%n", xs.xuehao, xs.xingming, total, avg); } } } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 成绩计算时 `(int)(平时*0.4 + 期末*0.6)` 是截断小数而非四舍五入,必须确保类型转换前不进行 `Math.round` 等操作。 - 多行输入中可能存在空行或末尾换行,需使用 `trim()` 和判空处理避免 `split` 出现异常或数组越界。 - 学生信息按学号聚合,但输入顺序可能打乱课程顺序,应使用 `LinkedHashMap` 保证输出顺序与输入一致。 ######[AI写代码神器 | 852点数解答 | 2025-10-29 16:07:33]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]