Java 实现:输入 3 学生成绩,精准计算总分与平均分!
以下是实现该功能的 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, String course, int usualScore, int finalScore) { this.studentId = studentId; this.name = name; setScore(course, usualScore, finalScore); } // 设置课程成绩的方法 public void setScore(String course, int usualScore, int finalScore) { Score score = new Score(usualScore, finalScore); if ("语文".equals(course)) { this.chineseScore = score; } else if ("数学".equals(course)) { this.mathScore = score; } else if ("物理".equals(course)) { this.physicsScore = score; } } // 计算学生总分的方法 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(); String course = scanner.next(); int usualScore = scanner.nextInt(); int finalScore = scanner.nextInt(); students[i] = new Student(studentId, name, course, usualScore, finalScore); // 继续输入该学生的另外两门课程成绩 for (int j = 0; j < 2; j++) { course = scanner.next(); usualScore = scanner.nextInt(); 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. Score 类:用于存储学生的平时成绩和期末成绩,并提供计算总成绩的方法。 2. Student 类:用于存储学生的基本信息(学号、姓名)和三门课程的成绩(语文、数学、物理),并提供计算总分和平均分的方法。 3. Main 类:主类,负责读取输入的学生信息,创建学生对象,并输出每个学生的总分和平均分。 需要小心的地方: 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 在输入学生信息时,要确保课程名的准确性,否则可能导致成绩无法正确分配。 2. 在计算平均分和输出结果时,要注意浮点数的精度问题,使用 `printf` 方法可以方便地控制输出的小数位数。 3. 在创建 `Student` 对象时,要确保每一个学生的三门课程成绩都被正确输入和设置,否则可能会导致计算结果错误。 ######[AI写代码神器 | 988点数解答 | 2025-10-08 20:31:01]
- 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
- 培训机构学员成绩与年龄更新: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
- 成绩等级统计:20个60 - 100分成绩的等级数量揭秘(字节豆包 | 219点数解答 | 2025-04-09 10:20:32)218
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)305
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1134
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343