Java 学生成绩管理系统开发:类型转换、Map 存储与数值计算的注意要点
```java class Score { private int dailyScore; private int finalScore; public Score(int dailyScore, int finalScore) { this.dailyScore = dailyScore; this.finalScore = finalScore; } public int getTotalScore() { return (int)(dailyScore * 0.4 + finalScore * 0.6); } } class Student { private String id; private String name; private Score chinese; private Score math; private Score physics; public Student(String id, String name) { this.id = id; this.name = name; } public void setChinese(Score chinese) { this.chinese = chinese; } public void setMath(Score math) { this.math = math; } public void setPhysics(Score physics) { this.physics = physics; } public int getTotal() { return chinese.getTotalScore() + math.getTotalScore() + physics.getTotalScore(); } public double getAverage() { double avg = getTotal() / 3.0; return Math.round(avg * 100) / 100.0; } public String getId() { return id; } public String getName() { return name; } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Map<String, Student> students = new LinkedHashMap<>(); for (int i = 0; i < 9; i++) { String[] data = scanner.nextLine().split(" "); String id = data[0]; String name = data[1]; String course = data[2]; int daily = Integer.parseInt(data[3]); int fina = Integer.parseInt(data[4]); students.putIfAbsent(id, new Student(id, name)); Student student = students.get(id); switch (course) { case "语文": student.setChinese(new Score(daily, fina)); break; case "数学": student.setMath(new Score(daily, fina)); break; case "物理": student.setPhysics(new Score(daily, fina)); break; } } for (Student student : students.values()) { System.out.printf("%s %s %d %.2f\n", student.getId(), student.getName(), student.getTotal(), student.getAverage()); } } } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 类型转换时注意精度丢失问题,特别是浮点数运算 - 使用Map存储对象时要确保键的唯一性和正确性 - 数值计算时注意四舍五入规则和舍入误差 ######[AI写代码神器 | 605点数解答 | 2025-10-08 21:37:55]
- C 语言:快速实现 5 个学生信息录入、按成绩升序排序并输出!(字节豆包 | 373点数解答 | 2024-10-30 00:37:20)409
- C语言实现:输入5名学生信息并按成绩升序排序输出(字节豆包 | 354点数解答 | 2024-10-30 18:45:58)354
- C语言:输入5个学生信息,按成绩升序排序并输出(字节豆包 | 373点数解答 | 2024-10-31 19:49:58)344
- C语言:输入5名学生信息并按成绩升序排序输出(字节豆包 | 326点数解答 | 2025-01-01 20:11:47)340
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)404
- 成绩等级统计:20个60 - 100分成绩的等级数量揭秘(字节豆包 | 219点数解答 | 2025-04-09 10:20:32)218
- 培训机构学员成绩与年龄更新:C++ 代码实现(DeepSeek | 186点数解答 | 2025-12-16 18:04:31)59
- Python 处理培训机构学员培训后年龄与 NOIP 成绩提升情况(DeepSeek | 73点数解答 | 2025-12-16 18:05:20)62
- 培训机构学员成绩提升:C++代码实现年龄与NOIP成绩更新(DeepSeek | 178点数解答 | 2025-12-31 12:20:24)59
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)305
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1134
- MySQL 数据库操作:用德鲁伊连接池和 Spring JDBC 实现 MVC 架构下 Student 表操作及事务测试全解析(字节豆包 | 1115点数解答 | 2025-03-19 11:17:31)289