面向对象高级接口的综合案例

张开发
2026/5/4 19:18:23 15 分钟阅读
面向对象高级接口的综合案例
解题思路分析1.创建Student类成员变量姓名性别成绩并创建有参构造 无参构造 getter/setter方法 和toString方法。把所有学生信息统一放到一个数据集合里方便后面两套方案共同使用。2.首先执行第一套方案执行 “打印学生信息”程序遍历所有学生数据逐个读取每个学生的姓名、性别、成绩直接把这些基础信息显示出来不做任何统计、不计算人数、不做额外处理执行 “计算平均分”程序把所有学生的成绩全部加起来得到总分用总分除以学生总人数得到普通平均分直接输出结果不去掉最高分、不去掉最低分3.执行 “打印学生信息”程序依旧遍历所有学生但这次不只是显示信息还会进行统计遍历过程中自动判断性别男生记一次女生记一次最后输出男生人数、女生人数、全班总人数执行 “计算平均分”程序依旧遍历所有成绩累加所有成绩得到总分找出成绩里的最高分找出成绩里的最低分然后用公式计算(总分 − 最高分 − 最低分) ÷ (总人数 − 2)最后输出去掉高低分后的公平平均分4.两套方案全部执行完毕输出两组不同结果程序运行结束。代码过程package com.sy.interfaceDemo; public class Student { private String name; //姓名 private String sex; // 性别 private double score; // 成绩 public Student() { } public Student(String name, String sex, double score) { this.name name; this.sex sex; this.score score; } public String getName() { return name; } public void setName(String name) { this.name name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex sex; } public double getScore() { return score; } public void setScore(double score) { this.score score; } Override public String toString() { return Student{ name name \ , sex sex \ , score score }; } }package com.sy.interfaceDemo; import java.util.ArrayList; /** * 第一套方案 */ public class StudentOperatorImpl1 implements StudentOperator{ //打印所有学生信息 Override public void printAllInfo(ArrayListStudent students) { System.out.println(全班所有学生基本信息); //遍历集合 for (int i 0; i students.size(); i) { Student s students.get(i); System.out.println(姓名 s.getName() , 性别 s.getSex() , 成绩 s.getScore()); } System.out.println(---------------------------------); } //打印全班学生平均分 Override public void printAverageScore(ArrayListStudent students) { //获取学生的总成绩 double sum 0.0; for (int i 0; i students.size(); i) { Student s students.get(i); double score s.getScore(); sum score; } //计算平均分 System.out.println(班级平均分是 sum / students.size()); } }package com.sy.interfaceDemo; import java.util.ArrayList; /** * 第二套方案 */ public class StudentOperatorImpl2 implements StudentOperator{ //打印所有学生信息 分别打印男女的人数 Override public void printAllInfo(ArrayListStudent students) { System.out.println(全班所有学生基本信息); //定义男女的变量 int manCount 0; int womanCount 0; //遍历集合 for (int i 0; i students.size(); i) { Student s students.get(i); //判断 需要统计男女个多少人 if(男.equals(s.getSex())){ manCount; }else{ womanCount; } } System.out.println(男生个数 manCount 人); System.out.println(女生个数 womanCount 人); System.out.println(总人数 (manCount womanCount) 人 ); System.out.println(---------------------------------); } //打印全班学生平均分 Override public void printAverageScore(ArrayListStudent students) { //获取学生的总成绩 去掉最高分 和最低分 double sumScore 0.0; //默认第一个分为最高分 double max students.get(0).getScore(); //默认第一个分为最低分 double min students.get(0).getScore(); for (int i 0; i students.size(); i) { Student s students.get(i); double score s.getScore(); //判断 获取最高分 if(score max){ max score; } //判断 获取最低分 if(score min){ min score; } sumScore score; } //计算平均分 System.out.println(班级平均分是 (sumScore - max - min) / (students.size() - 2)); } }package com.sy.interfaceDemo; import java.util.ArrayList; public interface StudentOperator { //两个功能 //1.统计数量(所有人) void printAllInfo(ArrayListStudent students); //2.打印平均分(所有人) void printAverageScore(ArrayListStudent students); }package com.sy.interfaceDemo; import java.util.ArrayList; public class StudentTest { public static void main(String[] args) { //创建对象 //第一种 //StudentOperator so new StudentOperatorImpl1(); //第二种 StudentOperator so new StudentOperatorImpl2(); //创建集合 ArrayListStudent list new ArrayList(); list.add((new Student(小王 , 男, 90))); list.add((new Student(小张 , 女, 80))); list.add((new Student(小李 , 男, 70))); list.add((new Student(小赵 , 男, 60))); list.add((new Student(小孙 , 女, 50))); //集合 so.printAllInfo(list); //打印平均分 so.printAverageScore(list); } }

更多文章