酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

7-2 成绩计算-2-关联类 分数 50 作者 蔡轲 单位 南昌航空大学 创建成绩类,包含: 属性:平时成绩(int)、期末成绩(int) 方法:计算总成绩(计算规则:平时成绩*0.4+期末成绩*0.6,保留整数部分,小数部分直接丢弃) 创建学生类,包含: 属性:学号(String)、姓名(String)、语文成绩(成绩类)、数学成绩(成绩类)、物理成绩(成绩类) 方法:计算总分、计算平均分 输入3个学生的信息,将每个学生的信息封装在一个学生对象中。 按输入顺序依次输出3个学生的总分、平均分(精确到小数点后两位,舍去部分按四舍五入规则计入最后一位)。 浮点数保留小数的相关知识可参考:https://blog.csdn.net/huaishuming/article/details/17752365 注意:未用学生类对象封装数据的,本题计0分 输入格式: 依次输入3个学生的每门课成绩,每个学生成绩信息格式: 学号+英文空格+姓名+英文空格+课程名+英文空格+平时成绩+英文空格+期末成绩 注:3个学生的课程顺序可能会不一致 例如: 22201311 张琳 语文 7

我来帮你解决这个编程问题。我们需要创建两个类:成绩类和学生类,并实现题目要求的功能。 ```java import java.util.*; class Grade { private int usualScore; private int finalScore; public Grade(int usualScore, int finalScore) { this.usualScore = usualScore; this.finalScore = finalScore; } public int getTotalScore() { return (int)(usualScore * 0.4 + finalScore * 0.6); } } class Student { private String id; private String name; private Grade chinese; private Grade math; private Grade physics; public Student(String id, String name) { this.id = id; this.name = name; } public void setGrade(String course, Grade grade) { switch (course) { case "语文": chinese = grade; break; case "数学": math = grade; break; case "物理": physics = grade; break; } } public int getTotalScore() { return chinese.getTotalScore() + math.getTotalScore() + physics.getTotalScore(); } public double getAverageScore() { return Math.round(getTotalScore() * 100.0 / 3) / 100.0; } public String toString() { return id + " " + name + " " + getTotalScore() + " " + String.format("%.2f", getAverageScore()); } } 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 usualScore = Integer.parseInt(data[3]); int finalScore = Integer.parseInt(data[4]); students.putIfAbsent(id, new Student(id, name)); Student student = students.get(id); student.setGrade(course, new Grade(usualScore, finalScore)); } for (Student student : students.values()) { System.out.println(student); } } } ``` 代码说明: 1. Grade类处理单科成绩计算,使用int类型直接截断小数部分 2. Student类管理学生信息和成绩,使用四舍五入保留两位小数 3. Main类处理输入输出,使用LinkedHashMap保持输入顺序 4. 平均分计算时先乘以100再除以100实现四舍五入到两位小数 注意事项: 1. 成绩计算时要注意类型转换,避免精度丢失 2. 使用LinkedHashMap保持学生输入顺序 3. 四舍五入处理要放在最后一步计算 4. 科目设置使用switch-case确保正确对应 [2025-04-18 11:43:55 | AI写代码神器 | 621点数解答]

相关提问