酷代码 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 代码: ```java import java.util.Scanner; // 成绩类 class Score { int usualScore; // 平时成绩 int finalScore; // 期末成绩 // 构造函数,用于初始化平时成绩和期末成绩 public Score(int usualScore, int finalScore) { this.usualScore = usualScore; this.finalScore = finalScore; } // 计算总成绩的方法 public int calculateTotalScore() { return (int) (usualScore * 0.4 + finalScore * 0.6); } } // 学生类 class Student { String studentId; // 学号 String name; // 姓名 Score chineseScore; // 语文成绩 Score mathScore; // 数学成绩 Score physicsScore; // 物理成绩 // 构造函数,用于初始化学生的基本信息 public Student(String studentId, String name) { this.studentId = studentId; this.name = name; } // 设置课程成绩的方法 public void setScore(String course, int usualScore, int finalScore) { if (course.equals("语文")) { chineseScore = new Score(usualScore, finalScore); } else if (course.equals("数学")) { mathScore = new Score(usualScore, finalScore); } else if (course.equals("物理")) { physicsScore = new Score(usualScore, finalScore); } } // 计算学生总分的方法 public int calculateTotalScore() { return chineseScore.calculateTotalScore() + mathScore.calculateTotalScore() + physicsScore.calculateTotalScore(); } // 计算学生平均分的方法 public double calculateAverageScore() { return (double) calculateTotalScore() / 3; } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Student[] students = new Student[3]; // 输入 3 个学生的信息 for (int i = 0; i < 3; i++) { String studentId = scanner.next(); String name = scanner.next(); students[i] = new Student(studentId, name); // 输入 3 门课程的成绩 for (int j = 0; j < 3; j++) { String course = scanner.next(); int usualScore = scanner.nextInt(); int finalScore = scanner.nextInt(); students[i].setScore(course, usualScore, finalScore); } } // 输出每个学生的总分和平均分 for (Student student : students) { int totalScore = student.calculateTotalScore(); double averageScore = student.calculateAverageScore(); System.out.printf("%d %.2f\n", totalScore, averageScore); } scanner.close(); } } ``` 代码注释已经详细解释了每一部分的功能。以下是需要格外小心处理的地方: 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 在 `Student` 类的 `setScore` 方法中,要确保课程名称的判断准确无误,因为课程名称的错误可能导致成绩无法正确分配。 2. 在计算平均分的时候,要注意将总分转换为 `double` 类型,否则可能会出现整数除法导致结果不准确的问题。 3. 在输入学生信息时,要保证输入的格式正确,特别是课程名称、平时成绩和期末成绩的顺序和类型不能出错。 [2025-10-29 09:00:27 | AI写代码神器 | 836点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多